6.<tag-链表和反转链表>lt.25- K 个一组翻转链表
lt.25- K 个一组翻转链表
[案例需求]
[思路分析]
- 参考题解: 点我
- 待总结
[代码实现]
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
//链表的反转方法:
/**
1. 修改了结点: 遍历链表的值放入list, 取出重新连接;
2. 不修改链表: 遍历链表, 头插法;
3. 不修改链表: 递归(还不会呢)
*/
// post遍历链表, 到达链表尾部就结束;
// 对post遍历次数进行计数 count, count==k时, 进入反转流程;
// pre记录每个反转区间的前一个结点;
// 对pre和post之间的链表结点进行反转;
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode pre = dummy;
ListNode tail = dummy;
while(true){
int count = 0;
while(tail != null && count != k){
++count;
tail = tail.next;
}
if(tail == null)break;
ListNode head1 = pre.next;
while(pre.next != tail){
ListNode cur = pre.next;
pre.next = cur.next;
cur.next = tail.next;
tail.next = cur;
}
pre = head1;
tail = head1;
}
return dummy.next;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律