- 博客(8)
- 收藏
- 关注
原创 代码随想录算法训练营第三天|206.反转链表
思路:双指针,temp放当前操作指针cur的下一个指针,pre放cur的上一个指针;先定义pre为NULL,然后cur为head,定循环的停止条件,然后每次循环都是先保存cur->next在temp,让cur->next指向pre,然后先把pre移动到现在的cur,cur移动到temp里存在cur-next。// 保存一下 cur的下一个节点,因为接下来要改变cur->next。// 可以和双指针法的代码进行对比,如下递归的写法,其实就是移动了pre和cur。//把cur->next指向pre;
2024-08-09 22:22:24
315
原创 代码随想录算法训练营第三天|203.移除链表元素
思路:先创建虚拟头结点,然后用while遍历链表所有元素,然后条件语句判断节点元素是是否等val,如果是就删除元素,也就是cur->next指向了cur->next->next。这里有记得先用temp放cur->next,然后后面把temp空间释放出来。最后记得返回的是hummyhead->next而不是head,因为head节点可能被我们删除了。2.节点的值用cur->next->val,而我写成了cur->next->Node;建议: 本题最关键是要理解 虚拟头结点的使用技巧,这个对链表题目很重要。
2024-08-09 20:17:07
240
原创 代码随想录算法训练营第二天 | 59.螺旋矩阵II
主要就是要记住每条边一直是"左闭右开",然后循环圈数是n/2,用while来控制循环圈数,要记得设置每一圈的起始点为startx和starty,不能直接用i和j,因为起始点会随着圈数的变化而变化,然后用四个循环遍历四条边。然后如果n是奇数记得要把中间的元素补上。: 本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。奇数阶的矩阵补上count的时候不用count++;错误原因:不会设置二维数组;offset没有加1;
2024-08-09 16:39:05
275
原创 代码随想录算法训练营第二天 | 209.长度最小的数组
然后用外圈的for循环去移动滑动窗口的尾巴索引也就是j,然后每次循环都内嵌一个while循环只要sum大于target就不断地移动滑动窗口的开头索引i,然后sum不断减去滑动窗口的第一个元素;还要判断结果子数组和滑动窗口的长度大小关系。因为是用滑动窗口的思想,先定义元素求和值sum,结果子数组长度,临时子数组长度,滑动窗口的起始点i=0.错误原因:完全没有思路,其实就是用for移动滑动窗口尾巴用while移动滑动窗口的开头。,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。拓展题目可以先不做。
2024-08-07 22:20:49
140
1
原创 代码随想录算法训练营第一天 |977.有序数组的平方
双指针的思路就是头尾两个指针,定义一个新的数组,判断头尾指针对应的元素谁大就放在新数组里,然后被放进去的元素的指针移动一位,之后头尾指针重合。错误原因:vector单词打错了。: 本题关键在于理解双指针思想。
2024-08-07 21:52:10
107
原创 代码随想录算法训练营第一天 | 27.移除元素
暴力解法:就是先逐个元素遍历,发现元素相等之后就让后面所有元素往前一位,然后让size-1和此刻数组元素下标i-1。直接return slowindex不用size--和return size;: 暴力的解法,可以锻炼一下我们的代码实现能力,建议先把暴力写法写一遍。错误原因:class Solution{};最后的花括号后面是有分号的;错误原因:nums.size()写成了nums.size;双指针法 是本题的精髓,今日需要掌握。,至于拓展题目可以先不看。判断是否等于应该是两个=号;
2024-08-07 21:35:43
169
原创 代码随想录算法训练营第一天 | 704.二分查找法
把midle=(left+right)/2;放在了while循环外面,应该放在里面的;单词拼错了,target和return拼成了traget和retrun;if、else if和else后面的执行语句没有加{};
2024-08-07 20:56:47
151
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人