算法
北上南下~
给我三千兵,三日之内
展开
-
链表反转-指定区间反转
LeetCode92: 给你单链表的头指 head 和两个整数 eft 和 right,其中 left原创 2023-09-19 21:03:57 · 169 阅读 · 0 评论 -
链表反转-LeetCode206
分析链表插入元素的时候,会发现如何处理头结点是个比较麻烦的问题,为此可以先建立一个虚拟的结点ans,并且令ans.next=head,这样可以很好的简化我们的操作。如下图所示,如果我们将链表(1->2->3->4>5)进行反转,首先建立虚拟结点ans,并令ans.next=node(1),接下来我们每次从旧的链表拆下来一个结点接到ans后面,然后将其他线调整好就可以了。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]原创 2023-09-18 21:51:27 · 227 阅读 · 0 评论 -
旋转链表-双指针思想-LeetCode61
因为k有可能大于链表长度,所以首先获取一下链表长度len,如果然后k=k % len,如果k == 0,则不用旋转,直接返回头结点。把快指针指向的节点连到原链表头部,慢指针指向的节点断开和下一节点的联系。先用双指针策略找到倒数K的位置,也就是(1,2,3)和4,5)两个序列,之后再将两个链表拼接成(4,5,1,2,3}就行了。题目要求:给定链表的头结点,旋转链表,将链表每个节点向右移动K个位置。输入:head = [1,2,3,4,5], k=2。输出:[4,5,1,2,3]2、慢指针和快指针一起走。原创 2023-09-18 21:32:11 · 274 阅读 · 0 评论