
Leetcode
文章平均质量分 62
fire2fire2
这个作者很懒,什么都没留下…
展开
-
leetcode每周3道(八)图之最短路
743. 网络延迟时间题目描述有 n 个网络节点,标记为 1 到 n。给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。现在,从某个节点 K 发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1 。思路题目实际是求节点 K 到其他所有点中最远的距离,那么首先需要求出节点 KK到其他所有点的最短路,然后取最大值原创 2022-05-26 21:06:20 · 512 阅读 · 0 评论 -
leetcode每周3道(六)二叉树
240 搜索二维矩阵Ⅱ题目描述编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。暴力法class Solution(object): def searchMatrix(self, matrix, target): """ :type matrix: List[List[int]] :type target: int原创 2022-05-10 23:14:31 · 235 阅读 · 0 评论 -
leetcode每周3道(五)二叉树
110.平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1 。1、自己的第一想法:思路:算出每一个结点的最大深度,再对每一个结点的左右孩子算最大深度差。倒着算应该会快些。但是这里没有有效的利用底层结点求出来的深度。时O(n^2) 空O(n)# Definition for a binary tree node.# class TreeNode(object):# ..原创 2022-04-20 23:37:21 · 283 阅读 · 0 评论 -
leetcode每周3道(四)
85.最大矩形给定一个仅包含0和1、大小为rows x cols的二维二进制矩阵,找出只包含1的最大矩形,并返回其面积。152.乘积最大子数组给你一个整数数组 nums,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个32-位 整数。子数组 是数组的连续子序列。暴力解法:以nums=[2,3,-1,-2,-4]为例,分别将以第i个开始到第j个结束的所有子数组乘...原创 2022-04-14 23:46:11 · 569 阅读 · 0 评论 -
动态规划之背包问题与投资问题
动态规划之背包问题与投资问题原创 2022-04-07 22:07:14 · 775 阅读 · 0 评论 -
leetcode每周3道(三)
1.最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。思路1、中心扩散法。最开始尝试的两边向中间扩散但是好像不行。从中间向两边可行。每个位置都做一次中心,然后看两边最远能扩散到哪里。注意边界条件。还要注意可能是奇数个也可能是偶数个。所以中心点可能是1个也可能是2个。class Solution(object): def longestPalindrome(self, s): """ :type s: str :.原创 2022-03-26 15:41:48 · 419 阅读 · 0 评论 -
leetcode每周3道(二)
leetcode每周3道(二)思路:(1)排序+双指针不断判断left,right,next_left,next_right之间的关系,先sort一下使得next_left一定大于now_left。那么就只要判断以下情况,并做各自的处理。时:O(nlogn) 空:O(nlogn)class Solution(object): def merge(self, intervals): """ :type intervals: Li......原创 2022-03-23 17:55:26 · 718 阅读 · 0 评论 -
动态规划——以01背包为例
题型:动规基础(斐波那契数列、爬楼梯)、背包问题、打家劫舍、股票问题、子序列问题原创 2022-03-21 21:51:34 · 670 阅读 · 0 评论 -
Leetcode 学习计划之21天算法 (十二)
第12天 动态规划70.爬楼梯1.当前层的走法数等于上一层的走法数+上上一层的走法数,因为最后一步可以一次迈1层,也可以一次迈2层。仅需记录上一层的走法数和上上一层的走法数。class Solution(object): def climbStairs(self, n): """ :type n: int :rtype: int """ last = 0 present = 1 .原创 2022-03-21 12:14:08 · 272 阅读 · 0 评论 -
Leetcode 学习计划之21天算法 (十四)
第14天 位运算原创 2022-03-21 10:12:51 · 300 阅读 · 0 评论 -
Leetcode 学习计划之21天算法 (十三)
第13天 位运算231.2的幂1、按位与 注意特判,如果是0先return False。其余情况都是 return not(n & (n-1)) 。class Solution(object): def isPowerOfTwo(self, n): """ :type n: int :rtype: bool """ if n == 0: return False .原创 2022-03-20 21:10:42 · 332 阅读 · 0 评论 -
Leetcode 学习计划之21天算法 (九)
第9天广度优先搜索 / 深度优先搜索原创 2022-03-20 17:22:42 · 327 阅读 · 0 评论 -
Leetcode 学习计划之21天算法 (八)
第8天广度优先搜索 / 深度优先搜索617.合并二叉树1、BFS。不用额外空间,直接在其中一棵树上操作即可。出队时,判断两棵树的左儿子是否都有,只有root1有,只有root2有,都没有这四种情况,右儿子同理。都有就都入队。否则不用入队。# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, val=0, left=None, right=None):# ..原创 2022-03-19 16:56:53 · 434 阅读 · 0 评论 -
Leetcode 学习计划之21天算法 (七)
第7天广度优先搜索 / 深度优先搜索733.图像渲染思路:1、DFS。用递归实现,设置seen数组,如不设置,在遇到newcolor==oldcolor时会超时,不断重复遍历。 这里也可以在开始做一个判断:如果newcolor==oldcolor直接返回原图,就不用seen数组了。class Solution(object): def floodFill(self, image, sr, sc, newColor): """ :ty...原创 2022-03-19 12:22:40 · 236 阅读 · 0 评论 -
DFS、BFS
BFS (seen数组+队列)#seen数组+队列def BFS(graph, s): queue = [] queue.append(s) # 向list添加元素,用append() seen = set() # 此处为set, python里set用的是hash table, 搜索时比数组要快。 seen.add(s) # 向set添加函数,用add() while原创 2022-03-19 11:51:32 · 402 阅读 · 0 评论 -
Leetcode 学习计划之21天算法 (十一)
第11天:递归、回溯77. 组合1、全部组合字眼,考虑回溯法。回溯法模板:(这里注意python中递归使用list时要用切片引用(浅复制),patch[:],而不用patch[]。void backtracking(参数) { if (终止条件) { 存放结果; //result.append(path[:]) return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { .原创 2022-03-17 17:01:46 · 521 阅读 · 0 评论 -
Leetcode 学习计划之21天算法 (十)
第10天:递归 / 回溯21.合并两个有序链表1、归并排序:额外建表 时O(m+n) 空O(m+n)2.归并排序:不额外建表 时O(m+n) 空O(1)# Definition for singly-linked list.# class ListNode(object):# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass So原创 2022-03-17 15:14:23 · 557 阅读 · 0 评论 -
leetcode每周3道
leetcode每周3道原创 2022-03-16 11:26:42 · 6087 阅读 · 0 评论 -
Leetcode 学习计划之21天算法 (六)
Leetcode 学习计划之21天算法 (六)第6天 滑动窗口原创 2022-03-12 18:17:08 · 244 阅读 · 0 评论 -
Leetcode 学习计划之21天算法 (五)
第5天 双指针876.链表的中间结点1、快慢指针 快指针每走两步,慢指针走一步;也可写成快指针一次走两步,慢指针一次走一步。2、遍历链表计数,再遍历数组只遍历到一半。# Definition for singly-linked list.# class ListNode(object):# def __init__(self, val=0, next=None):# self.val = val# self.next = nextc原创 2022-03-11 13:31:24 · 332 阅读 · 0 评论 -
Leetcode 学习计划之21天算法 (四)
第4天 双指针344.反转字符串标准双指针(对撞指针),reverse操作流氓写法:s[:]=s[::-1]class Solution(object): def reverseString(self, s): """ :type s: List[str] :rtype: None Do not return anything, modify s in-place instead. """ ...原创 2022-03-10 10:28:57 · 769 阅读 · 0 评论 -
Leetcode 学习计划之21天算法 (三)
第3天 双指针283.移动零1、一位一位的移动,如果第1位是0,利用切片把第2 位到最后一位往前移一位,最后一位填0。移动完再看当前位是不是0,如果是重复刚才的操作,不是往下走。指导看了len(nums)次为止。2、先遍历,看当前位不是0的话,就给他放到他应该待的位置上,直接进行覆盖。设置一个index指示非零的个数,i指示遍历到哪了。设置一个index,表示非0数的个数,循环遍历数组,如果不是0,将非0值移动到第index位置,然后index + 1遍历结束之后,index值表示为非0原创 2022-03-09 18:10:20 · 112 阅读 · 0 评论 -
Leetcode 学习计划之21天算法 (二)
Leetcode 学习计划之21天算法 双指针原创 2022-03-09 17:19:45 · 228 阅读 · 0 评论 -
Leetcode 学习计划之21天算法
Leetcode 学习计划之21天算法原创 2022-03-09 16:56:59 · 348 阅读 · 0 评论