带刷《力扣算法》
学无止境,秋招结束不意味学习结束,这里记录刷题的一些心得
爱捣鼓的小张
非科班转码上岸tier1自动驾驶感知算法工程师
古月居签约作者,cvlife嘉宾,全网万粉知识博主
|简历修改|学习路径规划
一起学习加wx njlzgs
展开
-
【力扣hot100】25 K个一组反转链表(c++)解析
思路和模拟方法相同,首先判断链表是否有K个数,不足则直接返回head。否则对前K个数进行反转,然后进行递归处理。这是一题比较简单的hard。原创 2024-03-28 15:21:16 · 266 阅读 · 0 评论 -
【力扣hot100】23 合并K个排序链表(c++)解析
假设链表a和b的长度都是 n,如何在 O(n)的时间代价以及 O(1)的空间代价完成合并?这个问题在面试中常常出现,为了达到空间代价是 O(1),我们的宗旨是「原地调整链表元素的next 指针完成合并」。,你可以把 head 设置为一个虚拟的头(也就是head 的),这是为了方便代码的书写,。我们需要。注意这里的描述,tail不是下一个插入的位置,aPtr和 bPtr所指向的元素处于「待合并」的状态,也就是说它们还没有合并入最终的链表。当然你也可以给他们赋予其他的定义,但是定义不同实现就会不同。原创 2024-03-27 14:57:56 · 813 阅读 · 0 评论 -
【力扣】210 课程表(c++)解析
【代码】【力扣】210 课程表(c++、python)解析。原创 2024-03-27 10:53:45 · 293 阅读 · 0 评论 -
【力扣hot100】207 课程表(c++、python)解析
相关题目: 210 课程表2这是一题经典的「拓扑排序」问题给定一个包含 n 个节点的有向图 G,我们给出它的节点编号的一种排列,如果满足:对于图 G 中的任意一条有向边 (u,v),u 在排列中都出现在 v 的前面那么称该排列是图 G 的「拓扑排序」*1.如果图 G 中存在环(即图 G 不是「有向无环图」),那么图 G 不存在拓扑排序。这是因为假设图中存在环 “x1,x2,…,„,í,那么 x1在排列中必须出现在 xn 的前面,但 xn同时也必须出现在 x1的前面,因此不存在一个满足要求的排列原创 2024-03-26 17:03:56 · 1100 阅读 · 0 评论 -
【力扣】438 找到字符串中所有字母异位词 (c++)解析
【代码】438. 找到字符串中所有字母异位词。原创 2023-08-29 11:36:50 · 155 阅读 · 0 评论 -
【力扣】823 带因子的二叉树 (c++)解析
传入数组,从小到大排序,初始化动态数组,结果res以及用于取余的mod,遍历arr每个元素,每个元素都可以作为一个单节点二叉树,先设为1,然后设立两个指针,一个指向首位元素,一个指向i-1,如果 arr[left] * arr[right]大于arr[i],则减小right的值,直到乘积小于arr[i];//状态转移方程,结束遍历这一层的dp[i],加入到结果中。原创 2023-08-29 10:41:25 · 147 阅读 · 0 评论 -
【力扣】 59 螺旋矩阵 (c++)解析
输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。原创 2023-07-22 19:06:39 · 276 阅读 · 0 评论 -
【力扣】209 长度最小的子数组(c++)解析
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。输入:s = 7, nums = [2,3,1,2,4,3]解释:子数组 [4,3] 是该条件下的长度最小的子数组。原创 2023-07-22 14:54:23 · 132 阅读 · 0 评论 -
【力扣】27 26 283 844 977 移除数组 (c++)解析
示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。元素的顺序可以改变。原创 2023-07-22 13:12:13 · 443 阅读 · 0 评论 -
【力扣】 704 35 34 69 367 二分查找 (c++)解析
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。注意点:注意左闭右闭边界更新的取值。原创 2023-07-21 17:09:18 · 293 阅读 · 0 评论 -
【力扣】7 整数反转 (c++)解析
但是题目要求不允许使用64位整数,也就是运算过程中的数字必须在32位有符号整数的范围内,因此我们不能直接按照上面式子进行计算,需要找其他方式。记rev是翻转之后的数字,为了完成翻转,我们可以重复弹出x末尾的数字,将其推入rev的末尾,直到x是0。题目需要判断推入数字是否溢出,要在推入数字之前判断,如果溢出那么不等式不成立返回0。原创 2023-04-05 13:26:16 · 182 阅读 · 0 评论 -
力扣算法 6.N 字形变换
对于其余的情况,考虑创建一个二维矩阵,然后在矩阵上按Z字形填写字符串s,最后逐行扫描矩阵中的非空字符,组成答案。具体来说,设当前填写的位置是(x,y)即矩阵的x行y列。根据题意,当我们在矩阵上填写字符时,会向下填写r个字符,然后向右上继续填写r-2个字符,最后回到第一行,因此Z字形变换的周期t=r+r-2=2r-2,每个周期会占用矩阵上的1+r-2=r-1列。因此我们有[n/t]个周期(最后一个周期视作完整周期),乘上每个周期的列数,得到矩阵的列数c=[n/t]*(r-1)。原创 2023-04-03 16:23:59 · 511 阅读 · 0 评论 -
【力扣】5 最长回文子串 (c++)解析
所提到的都是建立在子串长度大于2的前提之上的,还需要考虑动态规划中的边界条件,也就是子串的长度为1或者2.对于长度为1的子串,它显然是一个回文串;需要注意的是,在状态转移方程中,我们是从长度较短的字符串向长度较长的字符串进行转移的,因此需要注意动态规划的循环顺序。因此,可以使用动态规划解决本体,使用P(i,j)表示字符串s的第i到j个字母组成的串s[i:j] 是否为回文串。也就是说,只有s[i+1:j-1]是回文串,并且s的第i和j个字母相同时,s[i:j]才会是回文串。原创 2023-04-03 10:53:28 · 458 阅读 · 0 评论 -
【力扣】4 寻找两个正序数组的中位数 (c++)解析
寻找两个正序数组的中位数。原创 2023-02-12 16:00:38 · 84 阅读 · 0 评论 -
【力扣】3 无重复字符的最长子串 (c++)解析
给定一个字符串 s ,请你找出其中不含有重复字符串最长子串的长度。原创 2023-02-08 13:59:57 · 79 阅读 · 0 评论 -
【力扣】2 两数相加 (c++) 解析
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]请你将两个数相加,并以相同形式返回一个表示和的链表。解释:342 + 465 = 807。输出:[7,0,8]原创 2023-02-07 18:06:32 · 117 阅读 · 0 评论 -
【力扣】1 两数之和 (c++)解析
当我们使用遍历整个数组的方式寻找 target - x 时,需要注意到每一个位于 x 之前的元素都已经和 x 匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们只需要在 x 后面的元素中寻找 target - x。如果存在,我们需要找出它的索引。这样我们创建一个哈希表,对于每一个 x,我们首先查询哈希表中是否存在 target - x,然后将 x 插入到哈希表中,即可保证不会让 x 和自己匹配。最容易想到的方法是枚举数组中的每一个数 x,寻找数组中是否存在 target - x。原创 2023-02-07 16:38:53 · 147 阅读 · 0 评论