leetcode
文章平均质量分 86
力扣刷题
珞沫
欲望以提升热忱,毅力以磨平高山。
展开
-
Leetcode之螺旋矩阵(54)、螺旋矩阵II(59)、跳跃游戏(55)、跳跃游戏II(45)
1、螺旋矩阵(54)题目描述:【中等】给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]题目链接思路分析:1、按照层数来走圈(从左到右,从上到下,从左到右,从下到上)2、那走多少层呢?层数=(min(行数,列数)+1)// 23、每一层循环的开始位置和结束位置是关键4、当某一层只有一行 或者 一列的时候(有可能原创 2021-04-28 18:56:17 · 291 阅读 · 0 评论 -
LeetCode之二分查找之旋转数组系列题
旋转数组1、旋转数组(189)1、旋转数组(189)题目描述:【中等题】给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:1、尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。2、你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例一:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,原创 2021-03-02 20:26:26 · 1926 阅读 · 0 评论 -
LeetCode之回溯1——电话号码的字母组合(17)、括号生成(22)、复原IP地址(93)
递归1、电话号码的字母组合(17)1、电话号码的字母组合(17)题目描述:【中等】给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例一:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]题目链接思路分析...原创 2021-02-14 11:25:23 · 361 阅读 · 0 评论 -
LeetCode之动态规划2之不同路径(62)、不同路径II(63)、最小路径和(64)
矩阵路径1、最小路径和(64)2、不同路径(62)1、最小路径和(64)题目描述:【中等】给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例一输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。题目链接思路分析1、爬楼梯往上爬的方法只有两种:要么一个台阶,要么两个台阶。2、因此走到第 i 个楼梯的方法原创 2021-02-01 12:11:35 · 238 阅读 · 0 评论 -
LeetCode之对称二叉树(101)、左叶子之和(404)、最长同值路径(687)
1、对称二叉树(101)题目描述:【简单】给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3 题目链接思路分析:2、左叶子之和(404)题目描述:【简单】计算给定二叉树的所有左叶子之和。 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24题目链接思路分析:原创 2021-01-30 17:29:20 · 122 阅读 · 0 评论 -
LeetCode之相交链表(160)、分割链表(725)
1、相交链表(160)题目描述:【简单题】编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例一:输入: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 为原创 2021-01-28 16:17:30 · 157 阅读 · 1 评论 -
LeetCode之相同的树(100)、另一树的子树(572)、合并二叉树(617)
1、平衡二叉树(110)题目描述:【简单】给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 1 2原创 2021-01-28 11:39:28 · 186 阅读 · 2 评论 -
LeetCode之平衡二叉树(110)、翻转二叉树(226)
1、平衡二叉树(110)题目描述:【简单】给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true题目链接思路分析:这是求树的高度的延伸版, 我们只要求左右子树相差的高度是否超过 1,就可以了!题解一:自顶向下的递归1、首先我们需要定义一个高度函数,用于计算二叉树中的任意一个节点 p 的高度2、我们原创 2021-01-27 11:20:25 · 322 阅读 · 0 评论 -
Leetcode之颠倒二进制位(190)、2的幂(231)、4的幂(342)
1、颠倒二进制位(190)题目描述:【简单】颠倒给定的 32 位无符号整数的二进制位。示例一:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。来源原创 2021-01-23 14:09:39 · 244 阅读 · 1 评论 -
Leetcode之丢失的数字(268)、只出现一次的数字III(260)
1、丢失的数字(268)题目描述:【简单】给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?示例 1:输入:nums = [3,0,1]输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。示例 2:输入:nums = [0,1]输出:2解释:n = 2,因为有 2原创 2021-01-23 13:59:32 · 229 阅读 · 0 评论 -
Leetcode之汉明距离:两个数字对应二进制位不同的位置的数目(461)、只出现一次的数字(136)
1、汉明距离(461)题目描述:【简单】两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0≤x,y<231.0 ≤ x, y < 2^{31}.0≤x,y<231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑题目链接思路分析:1、首先是二进制2、想到二进制的按位异或运算:当两个对应位不同时结原创 2021-01-23 12:24:55 · 1142 阅读 · 0 评论 -
LeetCode之最长回文串(409)、最长回文子串(5)、回文子串(647)、计数二进制子串(696)
1、最长回文串(409)题目描述:【简单】给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。题目链接有点熟悉呀,哦!之前做过回文数这道题思路分析:要求:基于字符串所有字符,构造最长回文串回文串:正着读和反着读原创 2021-01-14 15:01:46 · 236 阅读 · 0 评论 -
LeetCode之最长公共前缀(14)、实现strStr()(28)
1、最长公共前缀(14)题目描述:题目链接题解一:利用zip(*)函数功能,将字符串的一一对应元素组合到列表中然后通过集合去重性判断每一个列表集合长度是不是1来决定前缀是否一致【python3 代码】class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: res="" for tmp in list(zip(*strs)): tmp_原创 2021-01-10 13:46:04 · 117 阅读 · 0 评论 -
LeetCode之整数反转(7)、字符串转换整数(8)、回文数(9)
1、整数反转(7)题目描述:题目链接思路分析题解一:利用字符串反转整数—>字符串—>反转注意反转后溢出范围的判断class Solution: def reverse(self, x: int) -> int: if -10<x<10: return x str_x=str(x) if str_x[0] != "-": str_x=str_x[::-1]原创 2021-01-06 09:36:21 · 139 阅读 · 0 评论 -
LeetCode之字符串1之Z字形变换(6)、罗马数字转整数(13)
1、Z字形变换(6)题目描述:【中等题】题目链接思路分析:参考:class Solution: def convert(self, s: str, numRows: int) -> str: if numRows==1: return s n=2*numRows-2 rows=[""]*numRows for i,char in enumerate(s): x=i原创 2020-12-04 15:12:29 · 140 阅读 · 0 评论 -
LeetCode之算法面试之优先队列之前k个高频元素(347)、合并k个有序链表(23)
队列——优先队列1、合并k个有序链表(23)2、前k个高频元素(347)1、合并k个有序链表(23)题目描述:【困难题】给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。题目链接思路分析:2、前k个高频元素(347)题目描述:【中等题】给定一个非空的整数数组,返回其中出现频率前 k 高的元素。题目链接思路分析:...原创 2020-11-24 10:48:09 · 142 阅读 · 0 评论 -
LeetCode之算法面试之队列2之完全平方数(279)、单词接龙(127)、单词接龙II(126)
队列21、 完全平方数(279)2、 单词接龙(127)3、 单词接龙II(126)应用队列解决最短路径相关问题1、 完全平方数(279)题目描述:【中等题】给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。题目链接思路分析:2、 单词接龙(127)题目描述:【中等题】给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度原创 2020-11-23 11:13:36 · 160 阅读 · 1 评论 -
LeetCode之算法面试之队列1之二叉树的层序遍历(102)、二叉树的锯齿形层次遍历(103)、二叉树的层次遍历II(107)、二叉树的右视图(199)
队列1前言1、 二叉树的层序遍历(102)2、二叉树的锯齿形层次遍历(103)3、二叉树的层次遍历II(107)4、二叉树的右视图(199)前言队列的基本知识\quad \quad队列的基本应用:1、广度优先遍历树:层序遍历图:无权图的最短路径2、优先队列应用队列解决树的相关问题1、 二叉树的层序遍历(102)题目描述:【中等题】题目链接思路分析:\quad \quad二叉树的层序遍历是指从二叉树的第一层(即根结点)开始,从上至下逐层遍历,则按从左到右的顺序对结点逐个访问。原创 2020-11-22 12:06:23 · 301 阅读 · 1 评论 -
LeetCode之算法面试之栈之有效的括号(20)、简化路径(71)、逆波兰表达式求值(150)
栈1、有效的括号(20)2、简化路径(71)3、逆波兰表达式求值(150)1、有效的括号(20)题目描述:【简单题】题目链接思路分析:2、简化路径(71)【中等题】题目链接思路分析:3、逆波兰表达式求值(150)【中等题】根据 逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。题目原创 2020-11-21 15:51:36 · 233 阅读 · 0 评论 -
LeetCode之算法面试之链表5之删除链表中的节点(237)、删除链表的倒数第N个节点(19)、旋转链表(61)、重排链表(143)、回文链表(234)
链表51、删除链表中的节点(237)2、删除链表的倒数第N个节点(19)3、旋转链表(61)4、重排链表(143)5、回文链表(234)1、删除链表中的节点(237)题目描述:【简单题】请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。题目链接思路分析:2、删除链表的倒数第N个节点(19)题目描述:【中等题】给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。题目链接思路分析:3、旋转链表(61)题目描述:【中原创 2020-11-08 12:59:36 · 289 阅读 · 0 评论 -
LeetCode之算法面试之链表4之两两交换链表中的节点(24)、k个一组翻转链表(25)、对链表进行插入排序(147)、排序链表(148)
链表41、两两交换链表中的节点(24)2、k个一组翻转链表(25)3、对链表进行插入排序(147)4、排序链表(148)1、两两交换链表中的节点(24)题目描述:【中等题】给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。题目链接思路分析:2、k个一组翻转链表(25)题目描述:【困难题】给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是原创 2020-11-07 20:43:35 · 216 阅读 · 0 评论 -
LeetCode之算法面试之链表3之合并两个有序链表(21)、移除链表元素(203)、删除排序链表中的重复元素(82)
链表31、合并两个有序链表(21)2、移除链表元素(203)3、删除排序链表中的重复元素(82)1、合并两个有序链表(21)题目描述:【简单题】将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。题目链接思路分析:2、移除链表元素(203)题目描述:【简单题】删除链表中等于给定值 val 的所有节点。题目链接思路分析:3、删除排序链表中的重复元素(82)题目描述:【中等题】给定一个排序链表,删除所有含有重复数字的节点,只保留原始原创 2020-11-07 10:27:20 · 231 阅读 · 0 评论 -
LeetCode之算法面试之链表2之两数相加(2)、奇偶链表(328)、两数相加II(445)
链表21、两数相加(2)2、奇偶链表(328)1、反转链表(206)1、两数相加(2)题目描述:【中等题】给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。题目链接思路分析:1、此题关键是处理两位相加进位与当前位的确定2、因为两个数字相加会产生进位,所以使用carry来保存进位,初原创 2020-11-06 08:46:13 · 299 阅读 · 0 评论 -
LeetCode之算法面试之链表1之反转链表(206)、反转链表II(92)、删除排序链表中的重复元素(83)、分隔链表(86)
链表11、反转链表(206)2、字母异位词分组(49)1、字母异位词分组(49)1、字母异位词分组(49)1、反转链表(206)题目描述:【简单题】题目链接思路分析:1、通过上图分析,反转链表相当于改变每一节点的next指针为前一节点。由于在转变过程中,涉及到前一节点,当前节点,遍历完当前节点转场的下一节点,则可以设置三个指针(pre前指针,cur当前指针,nxt下一指针),从而实现反转。2、初始pre为空指针,代表前一节点;cur为头节点head,代表当前节点;3、当前节点cur不原创 2020-11-04 11:42:22 · 238 阅读 · 0 评论 -
LeetCode之算法面试之查找表4之字母异位词分组(49)、直线上最多的点数(149)、四数相加II(454)、回旋镖的数量(447)
查找41、字母异位词分组(49)2、直线上最多的点数(149)3、四数相加II(454)4、回旋镖的数量(447)1、字母异位词分组(49)题目描述:【中等题】给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。题目链接思路分析:2、直线上最多的点数(149)题目描述:【困难题】给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。题目链接3、四数相加II(454)题目描述:【中等题】给定四个包含整数的数组列表 A , B原创 2020-10-03 17:51:13 · 233 阅读 · 1 评论 -
LeetCode之算法面试之查找表3之两数之和(1)、三数之和(15)、最接近的三数之和(16)、四数之和(18)
查找3—查找表的使用1、两数之和(1)2、三数之和(15)3、最接近的三数之和(16)4、四数之和(18)1、两数之和(1)题目描述:【简单题】给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。题目链接思路分析:2、三数之和(15)题目描述:【中等题】给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c原创 2020-09-29 10:46:06 · 585 阅读 · 0 评论 -
LeetCode之算法面试之查找2之两个数组的交集(349)、两个数组的交集II(350)、根据字符出现频率排序(451)
查找2—set\map的使用1、两个数组的交集(349)2、两个数组的交集II(350)1、两个数组的交集(349)题目描述:【简单题】给定两个数组,编写一个函数来计算它们的交集。题目链接思路分析:2、两个数组的交集II(350)题目描述:【简单题】给定两个数组,编写一个函数来计算它们的交集。题目链接思路分析:...原创 2020-09-27 15:17:58 · 278 阅读 · 0 评论 -
LeetCode之算法面试之查找1之快乐数(202)、同构字符串(205)、有效的字母异位词(242)、单词规律(290)
查找1—set\map的使用1、快乐数(202)2、同构字符串(205)3、有效的字母异位词(242)4、单词规律(290)1、快乐数(202)题目描述:【简单题】编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。题目链接思路分析:原创 2020-09-26 15:04:19 · 220 阅读 · 0 评论 -
LeetCode之算法面试之数组4之长度最小的子数组(209)、无重复字符的最长字串(3)、找到字符串中所有字母异位词(438)、最小覆盖字串(76)
数组41、长度最小的子数组(209)2、无重复字符的最长字串(3)3、找到字符串中所有字母异位词(438)————技巧点:滑动窗口1、长度最小的子数组(209)题目描述:【中等题】给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。题目链接思路分析:2、无重复字符的最长字串(3)题目描述:【中等题】给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。题目链接原创 2020-09-21 10:25:14 · 474 阅读 · 0 评论 -
LeetCode之算法面试之数组3之两数之和II—输入有序数组(167)、验证回文串(125)、反转字符串(344)、反转字符串中的元音字母(345)、盛最多水的容器(11)、平方数之和(633)
数组31、两数之和II—输入有序数组(167)2、验证回文串(125)3、反转字符串(344)4、反转字符串中的元音字母(345)5、盛最多水的容器(11)————技巧点:对撞指针1、两数之和II—输入有序数组(167)题目描述:【简单题】给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假原创 2020-09-19 15:58:50 · 467 阅读 · 0 评论 -
LeetCode之算法面试之数组2之颜色分类(75)、合并两个有序数组(88)、数组中的第k个最大元素(215)
数组21、颜色分类(75)2、合并两个有序数组(88)3、数组中的第k个最大元素(215)1、颜色分类(75)题目描述:【中等题】给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。2、合并两个有序数组(88)题目描述:【简单题】给你两个有序整数数组 nums1 和 nums2,请你将 nums原创 2020-09-18 14:01:20 · 260 阅读 · 0 评论 -
LeetCode之算法面试之数组1之移动零(283)、移除元素(27)、删除排序数组中的重复项(26)、删除排序数组中的重复项II(80)
数组1、移动零(283)2、删除排序数组中的重复项(26)3、移除元素(27)4、删除排序数组中的重复项II (80)1、移动零(283)题目描述:【简单题】题目链接思路分析2、删除排序数组中的重复项(26)题目描述:【简单题】给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。题目链接思路分析3、移除元素(27)题目描述:【简单原创 2020-09-17 10:16:28 · 474 阅读 · 0 评论 -
LeetCode之反转字符串(344)、反转字符串II(541)、整数反转(7)、字符串转换整数(8)
1、反转字符串(344)题目描述:【简单题】编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。题目链接思路分析要求:反转即倒序输出约束:原地修改题解一:字符串的反转函数class Solution: def reverseString(self, s: List[str])原创 2020-09-15 10:58:06 · 289 阅读 · 0 评论 -
LeetCode之贪心算法实战之买卖股票的最佳时机II(122)、分发饼干(455)、柠檬水找零(860)
贪心算法1、分发饼干(455)2、柠檬水找零(860)贪心算法思想1、分发饼干(455)题目描述:【简单题】假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为正。原创 2020-09-11 20:21:13 · 232 阅读 · 0 评论 -
LeetCode之二分查找实战2之第一个错误的版本(278)、猜数字大小(374)
二分查找21、第一个错误的版本(278)2、猜数字大小(374)1、第一个错误的版本(278)题目描述:【简单题】你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中原创 2020-09-08 09:37:44 · 417 阅读 · 0 评论 -
LeetCode之动态规划1之爬楼梯(70)、打家劫舍(198)、打家劫舍II(213)
动态规划1、最大子序和(53)2、爬楼梯(70)3、打家劫舍(198)1、最大子序和(53)题目描述:【简单题】题目链接思路分析题解二:动态规划第1步:定义状态既然一个连续子数组一定要以一个数作为结尾,那么我们可以将状态定义成如下:dp[i]:表示以num[i]结尾的连续子数组的最大和第2步:状态转移方程根据状态的定义,由于 nums[i] 一定会被选取,并且 dp[i] 所表示的连续子序列与 dp[i - 1] 所表示的连续子序列(有可能)就差一个 nums[i] 。假设数组 n原创 2020-09-06 12:09:48 · 271 阅读 · 0 评论 -
LeetCode之分治算法实战之最大子序和(53)、多数元素(169)、汉诺塔问题
分治算法1、最大子序和(53)2、多数元素(169)3、汉诺塔问题1、最大子序和(53)题目描述:【简单题】题目链接思路分析2、多数元素(169)题目描述:【简单题】给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。题目链接思路分析3、汉诺塔问题题目描述:【简单题】在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所原创 2020-09-01 21:23:12 · 781 阅读 · 0 评论 -
Leetcode之验证二叉搜索树(98)、二叉搜索树迭代器(173)
BST定义1、Leetcode之验证二叉搜索树(98)2、二叉搜索树迭代器(173)1、Leetcode之验证二叉搜索树(98)题目描述:【中等题】给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。思路分析题解一:递归+最大值最小值思想1、根据二叉搜索树的性质可知每一个结点(可设根结点位于(−inf,+inf)(-\inf ,+\inf原创 2020-09-01 17:02:12 · 231 阅读 · 0 评论 -
LeetCode之搜索插入位置(35)、x的平方根(69)、二分查找(704)、寻找比目标字母大的最小字母(744)、两个数组间的距离值(1385)
二分查找1、搜索插入位置(35)1、搜索插入位置(35)题目描述:【简单题】给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。题目链接思路分析1、排序数组,查找,可以想到运用二分查找方法2、又因为如果目标值不存在于数组中,返回它将会被按顺序插入位置.考虑这个插入的位置 pos\textit{pos}pos,它成立的条件为:nums[pos−1]<target≤nums[pos]原创 2020-08-31 17:19:42 · 402 阅读 · 0 评论 -
LeetCode之把二叉搜索树转换为累加树(538)、二叉搜索树中第K小的元素(230)、二叉搜索树的最小绝对差(530)、两数之和IV—输入BST(653)
二叉搜索树1、把二叉搜索树转换为累加树(538)2、二叉搜索树中第K小的元素(230)3、在二叉搜索树中寻找两个节点,使他们的和为给定值(653)1、把二叉搜索树转换为累加树(538)题目描述:【简单题】题目链接思路分析2、二叉搜索树中第K小的元素(230)题目描述:【中等题】给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。进阶:如果二叉搜索树经常被修改(插入/删除操原创 2020-08-27 16:04:07 · 185 阅读 · 0 评论