leetcode
文章平均质量分 57
追影少年*
这个作者很懒,什么都没留下…
展开
-
懒癌写算法(滑动窗口)
本文提供一个滑动窗口的算法模板,主要参照leetcode上fuxuemingzhu大佬的思路。文章目录前言一、模板代码&思路模板思路二、具体使用题目代码总结前言《挑战程序设计竞赛》这本书中把滑动窗口叫做「虫取法」,我觉得非常生动形象。因为滑动窗口的两个指针移动的过程和虫子爬动的过程非常像:前脚不动,把后脚移动过来;后脚不动,把前脚向前移动。作者:fuxuemingzhu链接:https://leetcode-cn.com/problems/get-equal-substrings-wi原创 2021-02-05 16:14:09 · 98 阅读 · 2 评论 -
LeeCode( 位运算)136_只出现一次的数字
LeeCode( 位运算)136_只出现一次的数字题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-number著作权归领扣网络所有。商业转载请联系官原创 2021-01-19 09:38:10 · 100 阅读 · 0 评论 -
LeeCode( 模拟)57_插入区间
LeeCode( 模拟)57_插入区间题目:给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例 1:输入:intervals = [[1,3],[6,9]], newInterval = [2,5]输出:[[1,5],[6,9]]示例 2:输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]输出:[[原创 2021-01-17 10:19:54 · 95 阅读 · 0 评论 -
LeeCode( 优先队列)45_跳跃游戏 II
LeeCode( 贪心算法)45_跳跃游戏 II题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组的最后一个位置。来源:力扣(LeetCode)链接:https://lee原创 2021-01-14 14:22:02 · 132 阅读 · 0 评论 -
LeeCode( 优先队列)239_ 滑动窗口最大值
LeeCode( 优先队列)239_ 滑动窗口最大值题目:给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 31 [3原创 2021-01-13 11:39:44 · 172 阅读 · 1 评论 -
LeeCode( 排序)215_ 数组中的第K个最大元素
LeeCode( 排序)215_ 数组中的第K个最大元素题目:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。来源:力扣(LeetCode)链接:https://leetcode-cn.com/原创 2021-01-12 11:16:10 · 92 阅读 · 0 评论 -
LeeCode( 动态编程)42_接雨水
LeeCode( 动态编程)42_接雨水题目:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9提示:n == height.leng原创 2021-01-07 10:39:00 · 103 阅读 · 0 评论 -
LeeCode( dfs)329_矩阵中的最长递增路径
LeeCode( dfs)329_矩阵中的最长递增路径题目:给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums =[[9,9,4],[6,6,8],[2,1,1]]输出: 4解释: 最长递增路径为 [1, 2, 6, 9]。示例 2:输入: nums =[[3,4,5],[3,2,6],[2,2,1]]输出: 4解释: 最长递增路径是 [3原创 2021-01-06 18:51:17 · 99 阅读 · 0 评论 -
LeeCode( 堆)218_天际线问题
LeeCode( 堆)218_天际线问题题目:城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回由这些建筑物形成的 天际线 。每个建筑物的几何信息由数组 buildings 表示,其中三元组 buildings[i] = [lefti, righti, heighti] 表示:lefti 是第 i 座建筑物左边缘的 x 坐标。righti 是第 i 座建筑物右边缘的 x 坐标。heighti 是第 i 座建筑物的高度。天际线 应该表示为由 “关键原创 2021-01-05 10:02:17 · 198 阅读 · 0 评论 -
LeeCode( 递归,迭代)21_合并两个有序链表
LeeCode( 递归,迭代)21_合并两个有序链表题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注原创 2021-01-04 10:31:56 · 119 阅读 · 0 评论 -
LeeCode( dfs,bfs)课程表
LeeCode( dfs,bfs)课程表题目:你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]]输出: true解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。示例 2:输入: 2, [[原创 2021-01-03 23:38:50 · 155 阅读 · 0 评论 -
LeeCode( LRU 最近最少使用)LRU 缓存机制
LeeCode( LRU 最近最少使用)LRU 缓存机制题目:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组原创 2021-01-02 17:43:17 · 262 阅读 · 0 评论 -
LeeCode(无向图,dfs,bfs)133_克隆图
LeeCode(无向图,dfs,bfs)133_克隆图题目:给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node {public int val;public List neighbors;}测试用例格式:简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列表表示。原创 2021-01-02 11:53:48 · 176 阅读 · 2 评论 -
LeeCode(哈希表)128_ 最长连续序列
LeeCode(哈希表)128_ 最长连续序列题目:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。进阶:你可以设计并实现时间复杂度为 O(n) 的解决方案吗?示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9来源:力扣(LeetCode)链接:https://le原创 2021-01-01 18:05:16 · 194 阅读 · 0 评论 -
LeeCode(递归,队列)101_对称二叉树
LeeCode(递归,队列)101_对称二叉树题目:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ 2 2/ \ / 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ 2 2\ 3 3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/symmetric-tree著作权归领扣网络所有。商业转载请联系官原创 2020-12-31 15:10:46 · 66 阅读 · 0 评论 -
LeeCode(回溯,dfs)17_电话号码的字母组合
LeeCode(回溯,dfs)17_电话号码的字母组合题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/p原创 2020-12-31 11:11:33 · 92 阅读 · 0 评论 -
LeeCode (二叉树,堆栈)94_二叉树的中序遍历
LeeCode (二叉树,堆栈)94_二叉树的中序遍历题目:给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]来源:力扣(LeetCode)链接:https://leetc原创 2020-12-30 21:10:00 · 158 阅读 · 0 评论 -
LeeCode(位,dfs)78_子集
LeeCode(位,dfs)78_子集题目:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subsets著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题思原创 2020-12-29 17:10:52 · 104 阅读 · 0 评论 -
LeeCode(排序)56_合并区间
LeeCode(排序)56_合并区间题目:给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: intervals = [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。来源:力扣(LeetCode)原创 2020-12-29 15:00:04 · 87 阅读 · 0 评论 -
LeeCode(动态规则,贪心算法)44_通配符匹配
LeeCode(动态规则,贪心算法)44_通配符匹配题目:给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = “aa”p = “a”输出: false解释: “a” 无法匹配 “aa” 整个字原创 2020-12-28 16:14:20 · 265 阅读 · 0 评论 -
LeeCode(堆,链表 )23_合并K个升序链表
LeeCode(堆,链表 )23_合并K个升序链表题目:给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6原创 2020-12-28 10:16:35 · 189 阅读 · 0 评论 -
LeeCode(栈 )20_有效的括号
LeeCode(栈 )20_有效的括号题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出原创 2020-12-27 10:52:27 · 98 阅读 · 0 评论 -
LeeCode 205_同构字符串
LeeCode 205_同构字符串题目:给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己示例 1:输入: s = “egg”, t = “add”输出: true示例 2:输入: s = “foo”, t = “bar”输出: false示例 3:输入: s = “paper”, t = “title”输出:原创 2020-12-27 10:14:06 · 103 阅读 · 0 评论