- 博客(5)
- 收藏
- 关注
原创 代码随想录算法训练营第4天|24. 两两交换链表中的节点、 19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
需要了解两件事情,如何确定位置信息和如何交换链表节点。另一个方法就是利用快慢指针,快指针每次移动两步,慢指针每次移动一步,如果有环,快指针必定先到达环内,并且当慢指针也进入环内之后,快指针将会以步长为1的相对速度追上慢指针,快慢指针必定会相遇。:利用双指针法(快慢指针)确定位置信息,具体为利用快指针从虚拟头节点开始先遍历N+1次节点,之后再让慢指针从虚拟头节点开始遍历,并且快指针继续遍历下去,当快指针到达nullptr之后就表明慢指针已经到达了待删除结点的前一个位置,此时进行删除操作即可,代码如下。
2024-11-17 11:12:12 86
原创 代码随想录第3天| 203.移除链表元素、707.设计链表、206.反转链表
链表基础:链表在内存空间中稀疏分布,通过指针进行连接,因此没办法使用索引进行读写,只能通过遍历来进行读写。
2024-11-17 10:30:32 23
原创 代码随想录训练营第二天|209长度最小的子数组、59螺旋矩阵、区间和
上述代码,我们首先寻找能够满足区间和大于target的窗口,如果满足要求,则逐步减小窗口,看是否能够满足长度最短,如果在缩小窗口的过程中无法再满足大于tartget的条件了,那么就扩大窗口。本题关键在于理清楚一个数字n需要旋转多少轮,以及如何计算每一轮的横向运动步数和纵向运动步数,另外,在最后的收尾时n为奇数和偶数的时候有一些细微的差别。最短子数组:可用滑动窗口做,所谓滑动窗口就是维护一段符合要求的数组区间,本题的要求就是数组区间的和需要大于target,在此之上再选择长度最短的区间。滑动窗口的代码如下。
2024-11-14 22:46:08 212
原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
接着是双指针法,双指针法的核心思想就是,在遍历的时候,快指针每次遇到待删除元素的时候就等待一次,然后让快指针继续前进一次,表示跳过待移除的元素(跳过意味着删除),如果在遍历的时候,还没有遇到待移除元素,就把快指针位置上的元素复制到慢指针的位置上,完整遍历一遍之后就可以实现移除元素了。移除元素:数组的元素存储在一片连续的地址上,这已经是最紧凑的存储方式了,因此如果要删除元素的话就没有那么简单,每次删除一个元素,为了维护数组的紧凑性,我们需要把被删除的元素的后面部分移前一次。采用左闭右闭区间的解法如下。
2024-11-13 18:08:05 138
原创 C语言中double和float的区别
double为双精度浮点数:用它来定义变量时,占用8个字节即64bits;float为单精度浮点数:用它来定义变量时,占用4个字节即32bits。注意:在格式化输出时,double类型需要用%lf来作为占位符;而float则需要用%f来作为占位符,否则无法正确输出。今天刚学了一些C语言的基础,在此发博客记录一下。
2023-08-25 17:08:13 857 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人