随笔分类 -  leetcode刷题

该文被密码保护。
posted @ 2020-07-13 14:05 GumpYan 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-07-10 14:34 GumpYan 阅读(2) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-07-10 14:23 GumpYan 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-07-10 07:09 GumpYan 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-07-09 20:17 GumpYan 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-07-08 15:10 GumpYan 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-07-08 15:06 GumpYan 阅读(0) 评论(0) 推荐(0)
摘要:思路: 记录1到N的每个数的根,因为如果有环,导致环相连的[u, v]一定有相同的root, 我们可以理解为是一个节点的两个分支,通过[u,v]被连起来了,既然他们是一个节点的两个分支,那么他们一定有相同的root,所以直接移除[u,v]就好啦。 class Solution: def findRe 阅读全文
posted @ 2020-07-08 11:01 GumpYan 阅读(140) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-07-06 14:50 GumpYan 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-07-06 10:53 GumpYan 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-07-06 10:17 GumpYan 阅读(2) 评论(0) 推荐(0)
摘要:解题思路排序之后就是字典序了,遇到单个字符,加到集合里,多个字符则看最后一个字符之前的字符是否已经在集合里,在的话,加进集合里,不在的话,可以直接不管了,因为已经排序,说明肯定无法一步一步的达到这个字符串,再用两个变量,保存首次遇到的最长长度,最后返回(有点重复代码) class Solution: 阅读全文
posted @ 2020-06-23 23:47 GumpYan 阅读(186) 评论(0) 推荐(0)
摘要:解法:由于同一个list中可能存在重复元素,所以考虑采用计数的方式解决问题,具体思路如下: 首先构建一个dict来记录list中的元素个数,称为count_dict;count_dict中的元素是一个长度为2的list,分别存储nums1和nums2中元素i的个数 class Solution: d 阅读全文
posted @ 2020-06-19 16:56 GumpYan 阅读(339) 评论(0) 推荐(0)
摘要:1.地图分析 解题思路此题是一个标准的广度优先题目。基本思路就是不断模拟从陆地向海洋扩张的最长距离: 查找初始所有陆地坐标,并进行判断是否为空或长度与grid大小一致,满足条件即输出-1 定义一个判断给定坐标值是否有效的辅助函数:isValid(x, y) 定义一个4向delta列表,用于从当前坐标 阅读全文
posted @ 2020-06-19 11:43 GumpYan 阅读(297) 评论(0) 推荐(0)
摘要:BFS 的核心思想应该不难理解的,就是把一些问题抽象成图,从一个点开始,向四周开始扩散。一般来说,我们写 BFS 算法都是用「队列」这种数据结构,每次将一个节点周围的所有节点加入队列。 BFS 相对 DFS 的最主要的区别是:BFS 找到的路径一定是最短的,但代价就是空间复杂度比 DFS 大很多 问 阅读全文
posted @ 2020-06-18 17:07 GumpYan 阅读(1510) 评论(0) 推荐(1)
摘要:其实第一次看到这道题,我首先想到的是滑动窗口算法,因为我们前文说过嘛,滑动窗口算法就是专门处理子串/子数组问题的,这里不就是子数组问题么?但是,稍加分析就发现,这道题还不能用滑动窗口算法,因为数组中的数字可以是负数。滑动窗口算法无非就是双指针形成的窗口扫描整个数组/子串,但关键是,你得清楚地知道什么 阅读全文
posted @ 2020-06-18 16:33 GumpYan 阅读(361) 评论(0) 推荐(0)
摘要:动态规划思想 注意:子串和子序列的区别 子串一定时连续的,子序列不一定是连续的 首先清楚dp数组的含义 定义:dp[i]表示以nums[i]这个数结尾的最长递增子序列的长度 因为nums[3]=4,最长递增子序列为1,3,4,所以长度为3即dp[3]=3 既然是递增子序列,只要找到前面那些结尾比4小 阅读全文
posted @ 2020-06-17 22:14 GumpYan 阅读(1414) 评论(0) 推荐(0)
摘要:排序数组中的搜索问题,首先想到 二分法 class Solution: def missingNumber(self, nums: List[int]) -> int: i, j = 0, len(nums)-1 while i <= j: m = (i+j)//2 if nums[m] == m: 阅读全文
posted @ 2020-06-16 23:35 GumpYan 阅读(218) 评论(0) 推荐(0)
摘要:遇到出入顺序的问题,可以用栈 方法 1:字母栈想法和算法 将 s 中的所有字母单独存入栈中,所以出栈等价于对字母反序操作。(或者,可以用数组存储字母并反序数组。) 然后,遍历 s 的所有字符,如果是字母我们就选择栈顶元素输出。 class Solution: def reverseOnlyLette 阅读全文
posted @ 2020-06-04 19:28 GumpYan 阅读(227) 评论(0) 推荐(0)
摘要:双指针 解题思路:算法流程: 设定 i,j 两指针分别指向 num1,num2 尾部,模拟人工加法; 计算进位: 计算 carry = tmp // 10,代表当前位相加是否产生进位;添加当前位: 计算 tmp = n1 + n2 + carry,并将当前位 tmp % 10 添加至 res 头部; 阅读全文
posted @ 2020-06-03 23:29 GumpYan 阅读(277) 评论(0) 推荐(0)