leetcode
zyddst1314
奔跑的脚步不要停
展开
-
递归解法
转载:https://lyl0724.github.io/2020/01/25/1/#%E9%80%92%E5%BD%92%E8%A7%A3%E9%A2%98%E4%B8%89%E9%83%A8%E6%9B%B2相信很多初学者和我一样,这是一个思维误区,一定要走出来。既然递归是一个反复调用自身的过程,这就说明它每一级的功能都是一样的,因此我们只需要关注一级递归的解决过程即可。如上图所示,我们需要关心的主要是以下三点:1.整个递归的终止条件。2.一级递归需要做什么?3.应该返回给上一级的返回值是什转载 2020-10-15 22:33:05 · 397 阅读 · 0 评论 -
前中后序的迭代和递归写法
前序递归class Solution { vector<int> res;public: vector<int> inorderTraversal(TreeNode* root) { if(root ==NULL ) { return res; } res.push_back(root->val); inorderTraversal(root->原创 2020-09-16 20:08:51 · 431 阅读 · 0 评论 -
回溯法问题理解
简介回溯法的基本原理是深度优先搜索,即所谓的尽可能深的搜索每一个图。它的基本思想是:首先访问图中的某一初始顶点v,,然后从v出发,访问相邻点w1,再访问w1的相邻点w2…重复上述过程。当不能再继续向下访问时,依次退回到最近被访问的顶点,若它还有邻接点未被访问,则从该点开始继续上述搜索过程,直到图中所有点均被访问过。回溯法的解题思路1.判断约束条件2. 进行回溯2.1 设置回溯初值,用于之后不成功返回2.2 将回溯初值置为0,避免重复访问2.3 进行上左下右试探,可行就成功2.4 失败就返回原创 2020-09-14 10:09:37 · 367 阅读 · 0 评论 -
(单调栈讲解)leetcode1475:商品折扣后的最终价格
题目给你一个数组 prices ,其中 prices[i] 是商店里第 i 件商品的价格。商店里正在进行促销活动,如果你要买第 i 件商品,那么你可以得到与 prices[j] 相等的折扣,其中 j 是满足 j > i 且 prices[j] <= prices[i] 的 最小下标 ,如果没有满足条件的 j ,你将没有任何折扣。请你返回一个数组,数组中第 i 个元素是折扣后你购买商品 i 最终需要支付的价格。示例 1:输入:prices = [8,4,6,2,3]输出:[4,2,4,原创 2020-06-19 12:23:02 · 701 阅读 · 0 评论 -
(动态规划)132. 分割回文串 II
题目给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回符合要求的最少分割次数。示例:输入: “aab”输出: 1解释: 进行一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子串。解析一、这题主要想不到的就是利用动态规划来求给定的字符串是不是回文字符串,求给定的字符串是不是回文字符串是固定模式,可以直接套用,1.i从1到n枚举;2,j从0开始,满足j+i-1小于n;3.左边位置l=j,右边位置r=j+i-1;4.判断s[l]==s[r]&&am原创 2020-06-14 22:28:49 · 309 阅读 · 0 评论 -
(动态规划)leetcod115:不同的子序列
题目给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。示例 1:输入:S = “rabbbit”, T = “rabbit”输出:3解释:如下图所示, 有 3 种可以从 S 中得到 “rabbit” 的方案。(上箭头符号 ^ 表示选取的字母)原创 2020-06-03 22:27:53 · 128 阅读 · 0 评论 -
(动态规划) leetcode264.丑数Ⅱ
题目编写一个程序,找出第 n 个丑数。丑数就是质因数只包含 2, 3, 5 的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明:1 是丑数。n 不超过1690。分析dp(n)表示第n个丑数,p1,p2,p3记录分别乘2,3,5位置,将乘2,3,5后的最小的数放在i的位置dp(i),如果i位置的数等于乘几的数,则乘几的位置后移一位,这样遍历n次即可得出结果。代码class Solution {原创 2020-06-02 21:59:08 · 169 阅读 · 0 评论 -
(动态规划)leetcode91:解码方法
题目一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入: “226”输出: 3解释: 它可以解码为 “BZ” (2 26), “VF” (22 6), 或者 “BBF” (2 2 6) 。思路本题的分类讨论思路如下:先初始化一个dp数组,d原创 2020-05-28 22:56:52 · 263 阅读 · 0 评论 -
(记忆化搜索)leetcode576.出界的路径数
题目给定一个 m × n 的网格和一个球。球的起始坐标为 (i,j) ,你可以将球移到相邻的单元格内,或者往上、下、左、右四个方向上移动使球穿过网格边界。但是,你最多可以移动 N 次。找出可以将球移出边界的路径数量。答案可能非常大,返回 结果 mod 109 + 7 的值。示例 1:输入: m = 2, n = 2, N = 2, i = 0, j = 0输出: 6解释:示例 2:输入: m = 1, n = 3, N = 3, i = 0, j = 1输出: 12解释:说明:球一原创 2020-05-27 16:15:37 · 246 阅读 · 0 评论 -
(动态规划)221.最大正方形
题目在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4分析最大正方形,我们要知道以点(i,j)为右下角的最大正方形其与左上角、左边以及上边点组成的正方形有关,其关系是:如果此格是1,以此为右下角的正方形的最大边长为:上面的正方形、左面的正方形或左上的正方形中,最小的那个,再加上此格。如图所示:图片来自dp[i+1][j+1]代表的是以点(i,j)为右下角的原创 2020-05-25 22:53:31 · 950 阅读 · 0 评论 -
(动态规划)leetcode338:比特位计数
题目给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/counting-bits分析开始这题可以使...原创 2020-04-26 16:59:13 · 283 阅读 · 0 评论 -
(动态规划)leetcode354:俄罗斯套娃的信封问题
题目给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。说明:不允许旋转信封。示例:输入: envelopes = [[5,4],[6,4],[6,7],[2,3]]输出:...原创 2020-04-21 09:33:42 · 450 阅读 · 0 评论 -
(动态规划)leetcode63:不同路径Ⅱ
题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[[0,0,0]...原创 2020-04-19 14:30:49 · 138 阅读 · 0 评论 -
(动态规划)leetcode120:最小路径和
题目给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。来源:力扣(LeetCode)链接...原创 2020-04-19 09:35:47 · 153 阅读 · 0 评论 -
leetcode111:二叉树的最小深度
题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最小深度 2.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-...原创 2020-04-17 22:22:45 · 130 阅读 · 0 评论 -
(位运算)leetcode201:数字范围按位与
题目给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7]输出: 4示例 2:输入: [0,1]输出: 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bitwise-and-of-numbers...原创 2020-04-17 15:23:09 · 365 阅读 · 0 评论 -
(位运算)leetcode371:两整数之和(不使用加减法)
题目不使用运算符 + 和 - ,计算两整数 a 、b 之和。示例 1:输入: a = 1, b = 2输出: 3示例 2:输入: a = -2, b = 3输出: 1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sum-of-two-integers分析1.两个数进行异或运算,相...原创 2020-04-17 10:46:41 · 357 阅读 · 0 评论 -
(位运算)leetcode137:只出现一次数字Ⅱ
题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,3,2]输出: 3示例 2:输入: [0,1,0,1,0,1,99]输出: 99来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob...原创 2020-04-16 14:32:30 · 161 阅读 · 0 评论 -
(位运算)leetcode476:数字的补数
题目给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。示例 1:输入: 5输出: 2解释: 5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。示例 2:输入: 1输出: 0解释: 1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。来源:力扣(LeetCode)链接:https://leetcode-cn.c...原创 2020-04-14 21:45:44 · 201 阅读 · 0 评论 -
(位运算)leetcode136: 只出现一次的数字
题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sing...原创 2020-04-14 18:02:06 · 129 阅读 · 0 评论 -
(位运算)leetcode762:二进制表示中质数个计算置位
题目给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。(注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。)示例 1:输入: L = 6, R = 10输出: 4解释:6 -> 110 (2 个计算置位,2 是质数)7 -> 111 (3 个计算置位,3 是质数...原创 2020-04-14 17:29:42 · 366 阅读 · 0 评论 -
(位运算)leetcode231:2的幂
题目给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/power-of-two解析一个数和它的相反数“...原创 2020-04-13 22:34:02 · 119 阅读 · 0 评论 -
leetcode3: 无重复字符的最长字串
题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke...原创 2020-04-12 09:23:40 · 137 阅读 · 0 评论 -
leetcode2:两数之和
题目:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&...原创 2020-04-11 11:28:42 · 88 阅读 · 0 评论 -
leetcode1.两数之和
今天是2020年4月10日,正式开始自己的leetcode刷题之旅,在自己的leetcode刷题之旅中,我会尽量遵从以下几点:1.代码注释的尽量完整,为之后阅读提供遍历;2.解题方法尽量多样,发散自己的思维;3.尽量多的列出相关知识点,拓展视野。题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每...原创 2020-04-10 17:24:02 · 95 阅读 · 0 评论