力扣题解(LeetCode)
文章平均质量分 68
个人感觉有意思,有难度,有提升的题的题解
就要 宅在家
New git new get
展开
-
LeetCode题解——42.连续子数组的最大和(动态规划思想)
这份代码中,并没有使用最大值数组。因为实际上我们只需记录前一位存储的最大值以及目前为止的最大值。下标1对应值为1,与前一位最大值-2相加为-1,是小于本身值的,因此下标1处最大值为1。在这道题中,数组连续是一个很重要的信息。我们可以创建一个数组用于记录每一位对应的最大值。同理,下标2处: -3 + 1 = -2 > -3,因此最大值为-2。从下标0处出发,该下标处没有前一位,因此-2所对应最大值即本身。按上述推导,我们在最大值数组中找到的最大值即是答案。因为题目要求连续,所以。原创 2022-10-12 17:30:00 · 382 阅读 · 0 评论 -
LeetCode题解——36.二叉搜索树与双向链表(中序遍历)
这样讲可能还有些不清楚,换一个说法:我们在操作一个节点时,只需要先递归左节点,找到本节点的前驱。完成前驱与本节点对接后,将本节点作为前驱,递归右子树,与右子树中本节点的后继对接即可。原创 2022-09-09 16:38:21 · 355 阅读 · 0 评论 -
Leetcode题解——30. 包含min函数的栈(辅助栈思想)
这样就可以利用同步栈的特性,完美的解决了当出栈值就是最小值时,回溯到上一个最小值的问题。此时st中入了三个元素,但后两个元素都比st_min的栈顶元素1大,所以st_min依旧入自己栈顶元素。这里的难点就是在st出栈后,假如出栈元素就是最小值,那么怎么回溯到上一个最小值。但如果st入栈值大,那st_min继续入自己的栈顶元素,即最小值。即,如果此时st入栈值小于st_min,那st_min入该值。但当-3入栈st后,-3小于1,所以st_min开始入栈-3。当st入栈出栈时,st_min同时入栈出栈。原创 2022-09-01 17:45:50 · 1200 阅读 · 1 评论 -
Leetcode题解——26.树的子结构
如果False,再开始将B树顶与A剩下节点匹配,直到True或A全部匹配结束False。当A中节点与B的树顶匹配时,再匹配B中剩下节点,全部一致True;该函数的中心思想是查看此时AB节点是否匹配,若匹配就继续判断A左B左以及A右B右。当B节点到空时,此时说明B中某一分支已经匹配完毕且与A完全一致,直接返回True。需要注意的是,递归时,左右子树的关系是或,当左或右有一个能有B树匹配即可。当A节点空时(B不空),此时说明A与B并不匹配,返回False。②此时节点与B树顶不匹配,直接递归A节点左右子树。...原创 2022-08-31 15:30:04 · 307 阅读 · 1 评论 -
LeetCode题解—260.只出现一次的数字Ⅲ
但是,这道升级题中有两个单独的数字,只是异或遍历一遍的话就相当于让这两个数字异或。这一位上是1的放一组,是0的放一组。在Ⅰ中,我们只需要把所有的数字异或一遍即可,因为只有一个数字是唯一的。异或两个数字,实际上就是二进制里它俩哪一位不同就是1,哪一位相同就是0。于是,问题就回到了最初的情况,一组里只有一个数字是单独的,其他都是两个。因为是两个不同的数字,所以注定它们至少有一位是不同的,该位的数值是1。第二步,取任意一位为1的位数,这里我们选第一位。也是一种解法,但哈希的空间复杂度太高,是O(N)。...原创 2022-08-15 15:21:42 · 348 阅读 · 0 评论 -
LeetCode题解—15.三数之和
从头开始固定一个数字,让另外两个一前一后与固定的数字相加,直到两个数字相遇,然后固定数字向后移动。1.因为要求是三数之和,所以固定一个数不动,让另外两个数移动搜索求和为0。2.因为题目要求不能有重复的数组,且基于第1点,所以要提前。这是一道很好的算法题。思考:如果用哈希表怎么解决,以及方不方便呢?在本题中,我们首先要理清思路。如果和等于0,记录此次三个数。如果和小于0,前头的向后移动。如果和大于0,后头的向前移动。3. 在进行搜索移动时,要。时间复杂度:O(n^2)空间复杂度:O(n)...原创 2022-08-07 15:29:58 · 249 阅读 · 7 评论 -
Leetcode力扣题解 - 30.串联所有单词的子串
一名优秀的程序员,在穿越单行道时也会确认双向的来车情况。假设字符串="barfoothefoobarman",关键词=["foo","bar"]。当关键词遍历完成后,如果哈希表中所有值都为0说明此时的字符串与关键词都匹配上了,否则就是没有匹配上。如果匹配成功,在返回的数组中保存起始位置即可。直到走到(字符串长度-关键词总长)的位置停止,这里都是3,所以把此时的字符串barfoo分成bar、foo两个部分装入哈希表中,在第一趟中,需要匹配的是barfoo,此时我们创建一个哈希表。...原创 2022-07-19 11:59:02 · 377 阅读 · 5 评论 -
力扣(LeetCode)142-环形链表Ⅱ
题目地址:142. 环形链表 II - 力扣(LeetCode)目录一.解题思路二.代码三.思考本题是一道经典的快慢指针应用题。大体思路如下:让快指针和慢指针同时出发,快指针在判断链表是否循环同时。当慢指针与快指针相遇,此时再从链表头出发一个慢指针,让两个慢指针同时出发,相遇的点即是链表入环的点。用数学来推导一下:假设有一个环形链表,设链表头到入环点距离为L,整个环的长度为O。 首先我们要知道一个基本知识:fast指针永远比slow指针多走一倍的长度,这一点贯穿始终。当slow走到入环点时,fast距离入原创 2022-07-10 17:05:22 · 454 阅读 · 2 评论 -
力扣(leetcode).648—单词替换
题目地址:https://leetcode.cn/problems/replace-words/小编使用C++来进行题解。本题的大思路是利用哈希表来进行句子中继承词的替换。具体来讲:第一步,构建哈希表来存储词典。因为题目要求用最短词来替换继承词,所以我们可以使用set容器来作为哈希表。第二步,将句子中单词用vector数组存储。第三步,将vector数组中的单词逐一对照哈希表,判断是否替换。第四步,将对照完成的vector数组中的单词重新拼成句子。解题完成。PS:小编建议先根据思路自己完成哦......原创 2022-07-07 19:57:27 · 354 阅读 · 1 评论