![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
咸鱼在鱼塘
这个作者很懒,什么都没留下…
展开
-
LeetCode热题Hot100 - 搜索旋转排序数组
二分法变种,关键在于搜索区间的判断,要注意大于、等于、小于三种情况分别怎么处理,在合适的时候合并分支。二刷代码可能更优雅- -,则返回它的下标,否则返回。你必须设计一个时间复杂度为。按升序排列,数组中的值。在预先未知的某个下标。原创 2024-04-24 23:15:38 · 176 阅读 · 0 评论 -
LeetCode热题Hot100 - 最长有效括号
用栈保存最近的一个非有效括号子串的位置,当遇到'('时,把当前下标入栈。遇到')'时,出栈,出栈后栈为空,说明当前子串不是有效子串,把当前下标入栈;出栈后栈不为空,说明当前弹出的是与后括号相匹配的左括号的下标,更新最长子串的长度(注意是当前下标减去栈顶下标)。的字符串,找出最长有效(格式正确且连续)括号子串的长度。原创 2024-04-23 22:44:27 · 265 阅读 · 0 评论 -
LeetCode热题Hot100 - 下一个排列
从后向前找最靠后的一个相邻升序组,记为[i, j]。j后的数组一定是倒序的。在[j, end]中找到最小的那个大于nums[i]的值,下标记为idx,交换nums[idx]和nums[i],然后对[i+1, end]取倒序(即从小到大排序)。就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的。原创 2024-04-22 23:09:33 · 151 阅读 · 0 评论 -
LeetCode热题Hot100 - 两两交换链表中的节点
使用两个指针p1/p2,分别记录需要交换的两个节点。另外使用一个指针last,记录两个节点的上一个节点。last.next = p2,p1.next = p2.next(记录p2后面的值,如果直接p2.next = p1,则p2后面待交换的节点会丢失),last.next.next = p1,完成交换。last指针往后移两个,重新生成p1和p2。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。原创 2024-04-15 22:39:15 · 157 阅读 · 0 评论 -
LeetCode热题Hot100 - 合并K个升序链表
第二反应,n个列表取头部node,n个node排序,取最小的,然后用同链表中次小的代替它。这样一来,需要对n个值不停排序。有没有不用一直排序,每次都取最小值的方法呢?用最小堆每次弹出n个node中最小的。那么最后一个问题,怎么确定最小的node属于哪个链表(因为要用同链表次小值代替它)?第一反应,n个列表,两两合并,n-1次遍历即可,但是这样n-1次排序会浪费很多时间。请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。逆天了- -困难模式一次过- -原创 2024-04-15 22:17:44 · 239 阅读 · 0 评论 -
LeetCode热题Hot100 - 括号生成
递归,考虑手动生成有效括号的逻辑。记录当前可能组合中左括号的个数left和剩余可用括号对数n,1.当left不为0时,加一个右括号,n不变,继续下一个 递归;2.当n不为0时,为当前可能组合加一个左括号,left+1, n-1,继续下一个递归;3.当n=0时,考虑left是否为0,不为0,则在当前可能组合右侧加上left个左括号。代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。改变递归调用方式,可能更优雅- -原创 2024-04-13 22:58:52 · 194 阅读 · 0 评论 -
LeetCode热题Hot100 - 合并两个有序链表
用两个指针分别指向两个列表的待合并结点,用另一个链表保存已合并结点。新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。原创 2024-04-12 22:10:51 · 228 阅读 · 0 评论 -
LeetCode热题Hot100 - 删除链表的倒数第N个结点
用两个指针,第一个指针先往前走n步(注意起始点不是head),然后第二个指针和第一个指针一起移动,当第一个指针走到链表最后一个结点时,第二个指针的next结点即为要删除的结点,另p2.next = p2.next.next即可。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。原创 2024-04-08 22:28:52 · 211 阅读 · 0 评论 -
LeetCode热题Hot100 - 有效的括号
使用一个栈维护s中出现的(、[、{信息,每次遇到)、]、},判断栈是否为空,或栈顶的左括号是否和右括号匹配,不匹配直接返回False。s遍历结束后,栈为空返回True,否则返回False。,判断字符串是否有效。原创 2024-04-08 22:38:54 · 234 阅读 · 0 评论 -
LeetCode热题Hot100 - 电话号码的字母组合
其次,使用递归,递归终止条件为没有号码(返回空列表)或只有一个号码(返回字典中对应的字母列表)。每次递归,做如下拼接:key可能对应的字母+digits[1:]所有可能的结果。首先,需要数字到字母表的映射,使用字典保存,key为数字,value为数字对应的字母列表。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。的字符串,返回所有它能表示的字母组合。原创 2024-04-08 22:08:33 · 241 阅读 · 0 评论 -
LeetCode热题Hot100 - 三数之和
当nums[left]+nums[right]=-nums[i],输出nums[i], nums[left], nums[right],然后left++继续遍历,直至left=right。当nums[left]+nums[right]>-nums[i],right--遍历nums[i],寻找index>i的部分中,和为-nums[i]的两个数。当nums[left]+nums[right]<-nums[i],left++最重要的是如何剪枝,对算法加速。**==>提示超出时间限制**对nums数组排序。原创 2024-04-07 22:09:00 · 196 阅读 · 0 评论 -
LeetCode热题Hot100 - 盛水最多的容器
用一个字典保存height中每个元素的下标,然后对height从小到大排序,遍历height数组,对每个height[i],得到原下标pos,计算pos与最左(height[0])、最右(height[-1])之间的面积,取最大值。用两个指针,从左右两侧向中间遍历数组,每次向内移动height较小的那个指针(移动较小的指针,则面积可能变大,但移动较大的指针,面积必然变小)。轴共同构成的容器可以容纳最多的水。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。然后去看了题解,秒啊~原创 2024-04-05 22:44:47 · 221 阅读 · 0 评论 -
LeetCode热题Hot100 - 正则表达式匹配
目前的思路:递归判断是否满足匹配条件。有几个用例超时,容我三思。,请你来实现一个支持。的,而不是部分字符串。原创 2024-04-02 22:18:23 · 266 阅读 · 0 评论 -
LeetCode热题Hot100 - 最长回文子串
二维数组,dp[i][j]表示s[i:j+1]是否是回文子串(dp中可以选择记录当前子串最大长度,也可以选择记录是否是回文子串,因为代码中的扫描方式,子串长度递增,所以用maxl和maxr记录最新的回文子串即可,返回最长回文子串,用maxl、maxr记录最长回文子串的起始和终点位置即可。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。1、dp数组初始化方式可以简化。2、不需要计算最大子串长度。原创 2024-04-01 23:21:58 · 195 阅读 · 0 评论 -
LeetCode热题Hot100 - 寻找两个正序数组的中位数
题目本身不是特别难,主要是对空字符串的处理。请你找出并返回这两个正序数组的。的正序(从小到大)数组。算法的时间复杂度应该为。原创 2024-03-30 23:07:00 · 260 阅读 · 0 评论 -
LeetCode热题Hot100-无重复字符的最长子串
请你找出其中不含有重复字符的。一刷,险些被自己绕进去了,哈哈哈。原创 2024-03-25 23:00:07 · 205 阅读 · 0 评论 -
LeetCode热题Hot100-两数相加
在内存上有没有可以优化的地方呢?(p2指针似乎没必要,直接用l2就行)你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。它们每位数字都是按照。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。原创 2024-03-24 22:18:00 · 217 阅读 · 0 评论 -
LeetCode热题Hot100-两数之和
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。充分意识到Coding能力的重要性,重启算法刷题之旅。一刷只写自己的解,二刷再看有没有其他更巧妙的方法~没想到这么简单的题目都写的磕磕绊绊。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。原创 2024-03-23 22:24:33 · 291 阅读 · 0 评论