![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
数据结构
奔跑卤蛋
这个作者很懒,什么都没留下…
展开
-
leetcode 142.环形链表II 快慢指针可以找环,还可以找环的入口位置
这题用哈希表记录出现过的结点很简单,找第一个重复的即可,但是空间复杂度非O(1)卡了半天没做出来,看了代码随想录的题解,妙啊。快慢指针判断是否有环,这个是基本功。原创 2024-03-02 20:19:19 · 360 阅读 · 0 评论 -
leetcode 面试题02.07.链表相交 双指针基本解法以及骚操作
两个指针,都遍历了两根链表,所以总步数都是m+n(链表长度m, n),而相交部分的长度是一样的,记作len,所以这种从头再遍历的方法,可以保证到达相交节点步数都是(m+n-len)。形象一点,B更长,所以同时开始便利的时候,headB落后headA一个身位,而headB遍历完B,跳到A之后,又可以追上headA,追上时,即为相交点。两个链表从开头走到相交结点的步数不一样,所以对不齐,没法同时遍历。同样的,遍历B,到c3后,跳到a1,再到达c1,也是8步!如果遍历A,到c3后,跳到b1,再到达c1,是8步。原创 2024-03-02 15:38:41 · 382 阅读 · 0 评论 -
leetcode 19.删除链表的倒数第N个结点 双指针一次遍历
两次扫描的方法很好想,第一次数有多少个,第二次定位到要删除的位置。初始化fast比slow快n-1个位置,两者都不断next。当fast到达末尾,slow的位置恰好就是倒数第n个。再维护一下slow的前一个,用于拼接。原创 2024-03-02 14:45:27 · 322 阅读 · 0 评论 -
leetcode 25.K个一组翻转链表 链表的局部原地翻转模板
1.假设k=3,数三个1,2,3。本次翻转的起始是1,记作oriSt,结束是3记作oriEd。3.1,2,3进行翻转,这个是基本功,不用考虑翻转之后的头被哪个指向、尾指向哪个。首先,链表题,都创建一个虚拟hair结点指向head,后面用不着可以删。2.翻转之前,记录起始位置的前一个pre,以及结束位置的下一个nxt。这题如果一边翻转,一边数k个,比较麻烦。原创 2024-03-02 14:31:43 · 364 阅读 · 0 评论