Leetcode
文章平均质量分 62
qq_40537232
这个作者很懒,什么都没留下…
展开
-
Leetcode-526 优美的排列
Leetcode-526 优美的排列第二天再写博客是真的有用,今天写昨天做的题,第一眼竟然是我做过吗?真的离谱,第二天做还是有助于回忆的。题目假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。条件:第 i 位的数字能被 i 整除i 能被第 i 位上的数字整除原创 2021-08-17 21:22:06 · 175 阅读 · 0 评论 -
Leetcode-576 出界的路径数
Leetcode-576 出界的路径数很长时间没写了,做题倒一直没拉下。但是现在一回顾,发现之前做的题目好多都不会了。还是继续题解吧,不求写题解将全部题目都记住,只是做个记录,以便以后的复习。题目给你一个大小为 m x n 的网格和一个球。球的起始坐标为 [startRow, startColumn] 。你可以将球移到在四个方向上相邻的单元格内(可以穿过网格边界到达网格之外)。你 最多 可以移动 maxMove 次球。给你五个整数 m、n、maxMove、startRow 以及 startColu原创 2021-08-16 23:51:52 · 327 阅读 · 1 评论 -
Leetcode-421 数组中两个数的最大异或值
对我本人来说,久违的题解了,果然,惰性是最容易产生的。今日的每日一题之所以进行记录,是因为在题目中可以用到字典树,而这一概念虽然简单,但是每次遇到总是想不起来是什么意思,认为自己不会,因此进行记录。题目给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。提示:1 <= nums.length <= 2 * 10^40 <= nums[i] <= 2^31 - 1输入:nums = [3原创 2021-05-16 22:04:26 · 97 阅读 · 0 评论 -
Leetcode-87 扰乱字符串
这一题还是没有什么思路,但是在看完题解后才发现,原来是被题目描述给吓到了,其实没有想象中的那么难,其使用的算法是搜索。题目描述使用下面描述的算法可以扰乱字符串 s 得到字符串 t :如果字符串的长度为 1 ,算法停止如果字符串的长度 > 1 ,执行下述步骤:在一个随机下标处将字符串分割成两个非空的子字符串。即,如果已知字符串 s ,则可以将其分成两个子字符串 x 和 y ,且满足 s = x + y 。随机 决定是要「交换两个子字符串」还是要「保持这两个子字符串的顺序不变」。即,在执行这一原创 2021-04-18 18:32:59 · 213 阅读 · 0 评论 -
Leetcode-1143 最长公共子序列
又是久违的题解了好久没有写过了。这一题其实不难,比较典型的动态规划。但是写题解的原因主要是在一开始做错了,边界条件设置问题,因此在这里记录一下。题目描述给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde"原创 2021-04-03 17:23:15 · 64 阅读 · 0 评论 -
Leetcode-456 132 模式
久违的题解,大概近一周的时间没有写了。题目说明给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。进阶:很容易想到时间复杂度为 O(n^2) 的解决方案,你可以设计一个时间复杂度为 O(n logn)原创 2021-03-25 23:40:47 · 109 阅读 · 0 评论 -
Leetcode-115 不同的子序列
这一题很头疼,一开始不会,看了题解认为很简单。但是在做的时候发现细节很多,花了大量的时间才想出来。但是还是有一些需要回顾一下。题目描述给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是)题目数据保证答案符合 32 位带符号整数范围。输入:s = "rabbbit", t = "rabbit"原创 2021-03-17 22:19:05 · 91 阅读 · 0 评论 -
Leetcode-331 验证二叉树的前序序列化
人千万不能有惰性,两天没写题解,就不是很想补之前的题解了,但是今天必须纠正这个事情,要开始补题解了。题目要求序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。 _9_ / \ 3 2 / \ / \ 4 1 # 6/ \ / \ / \# # # # # #例如,上面的二叉树可以被序列化为字符串 "9,3,4,#,#,1,#,#,2,#,原创 2021-03-13 17:43:47 · 106 阅读 · 0 评论 -
Leetcode-224 基本计算器 && Leetcode-227 基本计算器 II
今天的题目其实就是字符串处理,比较常见。当然我得承认,这类题目做的比较少,但是在数据结构中常见,而且会告诉我们可以用栈做。而这道题目也反映出我本人眼高手低的问题,想了很长时间依然错误。接下来我将在讲述解法的同时说明我本人的问题。题目说明实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。输入:s = "1 + 1"输出:2提示: 1 <= s.length <= 3 * 10 ^ 5 s由数字、'+'、'-'、'('、')'、和 ' ' 组成 s表示一个有效的表达式原创 2021-03-10 22:33:20 · 257 阅读 · 0 评论 -
Leetcode-131 分割字符串 && Leetcode-132 分割字符串II
最近两日的每日一题题目相似,其实方法也可以用回溯。但是Leetcode-132中,如果用之前的回溯会发现超时,此时对于回文数的判定需要用动态规划的方法减少时间复杂度。Leetcode-131给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。输入:s = "aab"输出:[["a","a","b"],["aa","b"]]本题其实与Leetcode-46 全排列类似,可以用回溯的方法进行遍历,得到所有原创 2021-03-08 23:25:19 · 227 阅读 · 0 评论 -
Leetcode-46 全排列
在做Leetcode的每日一题时,发现用到了回溯的知识点,类似的题目之前系统的刷过但还是忘了,因此找到了比较经典的问题进行复习。题目要求:给定一个 没有重复 数字的序列,返回其所有可能的全排列。输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解答很明显,我们需要将所有情况列举出来,但是在这个过程中,数组中的每个元素只能列举一次。因此,很容易的想到需要一个数组来存储每个元素的遍历原创 2021-03-07 19:25:26 · 93 阅读 · 0 评论 -
Leetcode-232 用栈实现队列
栈模拟队列是一个经典问题,因此将其记录下来。与队列不同的是,栈是一个先进后出的数据结构,而队列是一个先进先出的数据结构,很容易想到想用栈模拟队列需要多个栈。方法一 (入队O(n), 出队O(1))该方法是在每个元素入队时对栈内的元素进行重排列,使得第一个进的元素位于栈顶。第二个栈的功能就是充当在重排列时的临时存储空间,具体过程如下图所示:原本模拟的队列中已经插入了1、2两个元素,元素已经在栈中排列好,接着将插入3这个元素,首先将第一个栈的元素全部放入第二个栈中,如图所示:此时将元素3放入第一个原创 2021-03-05 11:40:18 · 114 阅读 · 1 评论