
LeetCode刷题
文章平均质量分 52
刷题思路
lliuhao--
贵在坚持
展开
-
leetcode 6911不间断子数组
给你一个下标从 0 开始的整数数组 nums。如果窗口内的最大值与最小值的差大于 2,就不断移动左端点 left,减少窗口内的数字。子数组是一个数组中一段连续 非空 的元素序列。在遍历数组的同时,用多重集合维护窗口内的数字。个子数组都是合法的,加入答案。原创 2023-07-02 15:23:17 · 463 阅读 · 0 评论 -
leetcode31. 下一个排列
如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1]。而 arr = [3,2,1] 的下一个排列是 [1,2,3] ,因为 [3,2,1] 不存在一个字典序更大的排列。类似地,arr = [2,3,1] 的下一个排列是 [3,1,2]。例如,arr = [1,2,3] 的下一个排列是 [1,3,2]。原创 2023-07-02 14:44:48 · 303 阅读 · 0 评论 -
leetcode 207. 课程表
先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi。2、只要队列非空,就从队首取出入度为 0 的顶点,将这个顶点输出到结果集中,并且将这个顶点的所有邻接点的入度减 1,在减 1 以后,发现这个邻接点的入度为 0 ,就继续入队。例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1。1、在开始排序前,扫描对应的存储空间,将入度为 0 的顶点均入队列。原创 2023-07-01 14:12:14 · 249 阅读 · 0 评论 -
leetcode1254. 统计封闭岛屿的数目
bfs: 遍历没有访问过的土地位置, 每次以没有访问过的土地位置为起点bfs, 并记录是否能到达矩阵的边界, 若不能则当前bfs访问的所有土地位置为一个封闭岛屿,并将访问过的土地染色成1。二维矩阵 grid 由 0 (土地)和 1 (水)组成。岛是由最大的4个方向连通的 0 组成的群,封闭岛是一个 完全 由1包围(左、上、右、下)的岛。这里要么分开写,然后将所有结果进行 && 操作,或者用 & 操作,否则存在某些节点无法遍历的情况,岛屿重复统计。请返回 封闭岛屿 的数目。原创 2023-06-18 10:26:26 · 92 阅读 · 0 评论 -
leetcode152. 乘积最大子数组
2.负数为奇数个,则从左边开始,乘到最后一个负数停止有一个“最大值”,从右边也有一个“最大值”,比较,得出最大值。思路: 求最大值,可以看成求被0拆分的各个子数组的最大值。1.负数为偶数个,则整个数组的各个值相乘为最大值;原创 2023-06-15 20:42:55 · 48 阅读 · 0 评论 -
trim前缀树
是一种特殊的多叉树,它的 TrieNode 中 chidren 是一个大小为 26 的一维数组,分别对应了26个英文字符 ‘a’ ~ ‘z’,也就是说形成了一棵 26叉树。对于普通的多叉树,每个节点的所有子节点可能是没有任何规律的。简单来说,就是用字典的方式存储和遍历26叉树。前缀树的结构可以定义为下面这样。就是每个节点的 children 有规律的多叉树。(只保存小写字符的)原创 2023-06-06 15:44:29 · 184 阅读 · 0 评论 -
leetcode10. 正则表达式匹配
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。原创 2023-05-18 10:29:54 · 482 阅读 · 0 评论 -
回溯算法及剪枝
回溯算法及剪枝理论基础模板框架实例思路剪枝回溯算法的本质是暴力穷举,即使用递归控制for循环嵌套的数量,本身不是一个高效的算法。尽管可以使用剪枝来提高效率,但是还是改不了穷举的本质。回溯法,一般用来解决组合,排列,切割,子集,棋盘等问题。理论基础回溯法也就是使用递归函数进行解决问题,精髓是使用递归控制for循环嵌套的数量。解决问题的过程可以抽象为树形结构,即一颗高度有限的树(N叉树)。从根节点一直走到叶子节点。叶子节点为满足条件的一个解决方案。因为回溯法解决的都是在集合中递归查找子集,所以集合的大原创 2022-02-13 11:59:47 · 4717 阅读 · 0 评论 -
leetcode第一题两数之和解法
leetcode第一题两数之和解法问题解法解法1,暴力求解O(n*n)解法2,先排序,再从两边开始找,O(nlogn)解法3,使用键值对map,O(n)问题给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释原创 2021-10-24 15:43:15 · 209 阅读 · 1 评论