leetcode
无声有寒
这个作者很懒,什么都没留下…
展开
-
二叉树总纲
1.基础2.遍历深度,广度3.递归三部曲确定函数的参数和返回值确定终止条件单层递归逻辑原创 2021-09-23 14:07:22 · 72 阅读 · 0 评论 -
回溯算法总纲
1 .解决问题:组合切割子集排列棋盘抽象成????来解决。回溯模板void backtraking(参数){ if(终止条件){ 存放结果 return; } for(选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; backtraking(路径,选择列表); //递归 回溯,撤销处理结果 }}递归函数的参数和返回值确定终止条件单层递归逻辑...原创 2021-09-22 08:04:23 · 59 阅读 · 0 评论 -
动态规划总纲
1.动态规划分类2.动态规划5伤拳dp数组及下标含义递推公式dp数组如何初始化遍历顺序打印dp数组原创 2021-09-21 10:46:10 · 83 阅读 · 0 评论 -
102. 二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[ [3], [9,20], [15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal著...原创 2021-06-13 10:07:55 · 49 阅读 · 0 评论 -
129. 求根节点到叶节点数字之和
给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。每条从根节点到叶节点的路径都代表一个数字:例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。计算从根节点到叶节点生成的 所有数字之和 。叶节点 是指没有子节点的节点。示例 1:输入:root = [1,2,3]输出:25解释:从根到叶子节点路径 1->2 代表数字 12从根到叶子节点路径 1->3 代表数字 13因此,数字总和 = 1.原创 2021-06-12 16:45:39 · 243 阅读 · 0 评论 -
剑指 Offer 22. 链表中倒数第k个节点
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lian-bia.原创 2021-06-08 14:55:01 · 54 阅读 · 0 评论 -
112.路径总和
思考原创 2021-06-08 10:40:31 · 51 阅读 · 0 评论 -
46.全排列
知识1.浅拷贝是拷贝引用,深拷贝是复制数组元素。因为path后面还在不停变,所以要把当前的path数组拷贝push进res里面。2.深拷贝的方法原创 2021-06-07 11:26:19 · 92 阅读 · 0 评论 -
415. 字符串相加
给定两个字符串形式的非负整数num1和num2,计算它们的和。提示:num1和num2的长度都小于 5100 num1和num2都只包含数字0-9 num1和num2都不包含任何前导零 你不能使用任何內建 BigInteger 库,也不能直接将输入的字符串转换为整数形式思考不能直接转换成数字相加,就只能一位一位字符取出来。像竖式那样相加代码实现/** * @param {string} num1 * @param {string} num2 *...原创 2021-03-21 22:21:59 · 68 阅读 · 0 评论 -
836.矩形重叠
矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:true示例 2:输入:rec1 = [0,0,1,1], rec2 = [1,0,2,1]输出:false提示:两个..原创 2020-10-21 09:38:21 · 96 阅读 · 0 评论 -
733.图像渲染(dfs,战舰填色)
有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。给你一个坐标(sr, sc)表示图像渲染开始的像素值(行 ,列)和一个新的颜色值newColor,让你重新上色这幅图像。为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录的像素点的颜色值改为新的颜色值。最后返回经过上色渲染...原创 2020-10-14 09:31:13 · 164 阅读 · 0 评论 -
704.二分查找
给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示:你可以假设 ...原创 2020-10-13 10:31:16 · 60 阅读 · 0 评论 -
680.验证回文字符串2
给定一个非空字符串s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: "aba"输出: True示例 2:输入: "abca"输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-palindrome-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思考..原创 2020-10-09 13:41:41 · 142 阅读 · 0 评论 -
419.甲板上的战舰(dfs, 沉没战舰)
给定一个二维的甲板, 请计算其中有多少艘战舰。战舰用'X'表示,空位用'.'表示。你需要遵守以下规则:给你一个有效的甲板,仅由战舰或者空位组成。战舰只能水平或者垂直放置。换句话说,战舰只能由1xN (1 行, N 列)组成,或者Nx1 (N 行, 1 列)组成,其中N可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔- 即没有相邻的战舰。示例 :X..X...X...X在上面的甲板中有2艘战舰。无效样例 :...XXXXX...X你不会收到这样的无效甲...原创 2020-10-08 09:18:53 · 723 阅读 · 0 评论 -
349.两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。思考这道题思路很简单,遍历nums2,看里面的元素在nums1里面有没有就可以了,有的话就放到一个集合里。但注意,判断在不在nums1里,如果..原创 2020-10-07 13:14:39 · 74 阅读 · 0 评论 -
328.奇偶链表
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6->原创 2020-10-06 09:56:56 · 73 阅读 · 0 评论 -
283.移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/move-zeroes著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思考刚开始想的一个指针在前面,一个指针从后面,如果前面为0切原创 2020-10-05 08:22:24 · 67 阅读 · 0 评论 -
242.有效的字母异位词
给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?思考我开始的想的是,分别遍历s,t,用map存储里面的字母:数量。最后再一一比较。这样首先要遍...原创 2020-10-04 21:46:28 · 65 阅读 · 0 评论 -
219.存在重复元素ll (map)
给定一个整数数组和一个整数k,判断数组中是否存在两个不同的索引i和j,使得nums [i] = nums [j],并且i和j的差的绝对值至多为k。示例1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [1,2,3,1,2,3], k = 2输出: false思考这一题我一开始的做法是,遍历数组,然后...原创 2020-10-02 11:01:20 · 161 阅读 · 0 评论 -
217.存在重复元素(set)
给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/contains-duplicate著..原创 2020-10-02 10:20:25 · 97 阅读 · 0 评论 -
198.打家劫舍(DP,贪心)
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示例 2:...原创 2020-10-01 09:18:09 · 276 阅读 · 0 评论 -
187.重复的DNA序列
所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来查找目标子串,目标子串的长度为 10,且在 DNA 字符串s中出现次数超过一次。示例:输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"输出:["AAAAACCCCC", "CCCCCAAAAA"]思考1.通用的解法是,设置一个map,用子字符串当key, 次数当...原创 2020-09-30 08:48:44 · 237 阅读 · 0 评论 -
160.相较链表
编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B原创 2020-09-29 10:50:55 · 93 阅读 · 0 评论 -
153. 寻找旋转排序数组中的最小值
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7] 可能变为[4,5,6,7,0,1,2])。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-a...原创 2020-09-28 09:37:59 · 156 阅读 · 0 评论 -
152.乘积最大子数组
给你一个整数数组 nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释:子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释:结果不能为 2, 因为 [-2,-1] 不是子数组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-product-subarray著作...原创 2020-09-26 08:36:12 · 63 阅读 · 0 评论 -
142.环形链表2
给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2]...原创 2020-09-25 09:41:00 · 58 阅读 · 0 评论 -
141.环形链表
给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:输入:head = ..原创 2020-09-24 08:11:35 · 99 阅读 · 0 评论 -
134.加油站
在一条环路上有N个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例1:输入:gas = [1,2,3,4,5]cost = [3,4,5,1,...原创 2020-09-23 09:07:47 · 89 阅读 · 0 评论 -
125.验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-palindrome著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明原创 2020-09-22 11:02:49 · 158 阅读 · 0 评论 -
121.买卖股票的最佳时机
给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。...原创 2020-09-21 08:16:57 · 80 阅读 · 0 评论 -
206.反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思考本来想的是遍历,然后按头插法生成一原创 2020-09-19 11:12:13 · 99 阅读 · 0 评论 -
83. 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->3->3输出: 1->2->3思考这题比较简单,链表是排好序的,那我们我们从头开始,依次遍历,看当前位置的值和下一位是否一样。一样,就删除后一位。不一样,则指针后移。一直遍历到倒数第二位即可。代码实现/** * Definition for singly..原创 2020-09-18 08:43:52 · 59 阅读 · 0 评论 -
73.矩阵置零
给定一个mxn的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例2:输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出: [ [0,0,0,0], [0,4,5,0], [0,3,1,0]]进阶:...原创 2020-09-17 08:25:49 · 182 阅读 · 0 评论 -
70.爬楼梯
假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶来源:力扣(LeetCode)链接:https://leetcod...原创 2020-09-16 09:54:23 · 104 阅读 · 0 评论 -
66.加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/plus-..原创 2020-09-15 07:22:52 · 75 阅读 · 0 评论 -
62.不同路径
一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -> 向下 -> 向右3....原创 2020-09-14 07:32:15 · 95 阅读 · 0 评论 -
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] 可被视为重叠区间。注意:输入类型已于2019年4月15日更改。 请重置默认代码定义..原创 2020-09-12 08:59:42 · 90 阅读 · 0 评论 -
55.跳跃游戏
中等给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置来源..原创 2020-09-11 11:27:06 · 202 阅读 · 0 评论 -
54.螺旋矩阵
给定一个包含m x n个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]来源:力扣(LeetCode)链接:https:/...原创 2020-09-10 10:28:18 · 97 阅读 · 0 评论 -
53. 最大子序和
给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思考大概思路就是遍历每个数字,判断他们是加入之前的...原创 2020-09-09 08:44:14 · 100 阅读 · 0 评论