![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法训练打卡
文章平均质量分 65
耶hu
这个作者很懒,什么都没留下…
展开
-
第三天打卡|203.移除链表元素、707.设计链表、206.反转链表
刚开始写的时候看到代码中给定了节点的多种定义方式,陷入了误区,实际上不需要重新构造节点,复制节点所带的元素,只用改变指针的指向就好了。注意三个点:1. 当头节点带元素时,考虑头节点的元素是否和val相同,若相同则头节点改变;2. 删除某个节点时,先链接下一个节点再删除;我习惯用指针先指向当前节点下一节点,但是当前节点为NULL时,将指针指向该节点的next会报错。指向删除节点的指针一定要使之指向nullptr,否则会成为野指针(delete后的指针是随意指向的),一不小心就被用到,造成内存泄漏。原创 2024-01-12 23:59:31 · 384 阅读 · 0 评论 -
第一天打卡|704.二分查找、27.移除元素
打卡第一天,学习了二分查找,第一次知道“左闭右闭”,“左闭右开”的概念,原来我之前一直写的都是左闭右闭。2. 双指针移动法:可以看作是两个指针,指针1指向原数组,指针2指向新数组(虚拟),想象成每一次把指针1指向的不同于val的数放进新数组中。但实际上新数组是从覆盖原数组得到的,从0开始,当不等于val时,指针1和指针2同时移动并且将指针1指向的数字赋值给指针2指向的位置;两种做法:1. 暴力移动,嵌套循环,外层循环找val相同的数,内层循环负责把原位置后面的数前移并覆盖原来的数。原创 2024-01-10 20:30:01 · 403 阅读 · 1 评论 -
第二天打卡|977.有序数组的平方、209.长度最小的数组、59.螺旋矩阵Ⅱ
暴力算法,双层for循环,外层遍历定起点i,内层遍历从i开始,定第一个符合要求的子串的终点j,与当前最短的比较,由于j不断要返回i的位置,时间复杂度为O(n²)。可以采用双指针法,指针j正向扫描定结尾(以上一次i作开头,满足sum >= target),向后移动指针i寻找最短子串,一旦i不符合条件就break,让j继续前移。要实现O(n)的时间复杂度,可以使用双指针的方法。希望平方后的数组非递减,可以利用双指针,从外侧向内遍历,比较两侧平方中比较大的数,把它填到新的数组中。原创 2024-01-11 17:14:27 · 365 阅读 · 1 评论