栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

[LeetCode] 25. K 个一组翻转链表(java实现)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[LeetCode] 25. K 个一组翻转链表(java实现)

[LeetCode] 25. K 个一组翻转链表(java实现)

1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结

1. 题目



2. 读题(需要重点注意的东西)

思路:
① 剩下的节点是否够k个(遍历一遍)
② 剩下的节点够k个的话,将其中的节点全部翻转

注意:此处翻转有三步: 
1. 翻转k个节点
2. 改变前置指针
3. 改变末尾指针

③ 判断剩下的节点,如果满足,则执行第2步,否则直接返回dummy(哨兵)即可

3. 解法

---------------------------------------------------解法---------------------------------------------------:

class Solution {
    public ListNode reverseKGroup(ListNode head, int k) {
        ListNode dummy = new ListNode(-1);
        dummy.next = head;
        for(ListNode node = dummy;;){
            // ①
            ListNode cur = node;
            int i = 0;
            while(cur.next != null && i != k){
                i++;
                cur = cur.next;
            }
            // ③
            if(cur.next == null && i != k) break;
            // ②
            else{
                ListNode a = node.next,end = cur.next,b = a.next;
                ListNode first = a;
                while(b != end){
                    ListNode temp = b.next;
                    b.next = a;
                    a = b;
                    b = temp;
                }
                node.next = a;
                first.next = end;
                node = first;
            }
        }
        return dummy.next;
    }
}
4. 可能有帮助的前置习题

[LeetCode]206. 反转链表 (java实现) 5. 所用到的数据结构与算法思想

链表 6. 总结

翻转链表的扩展

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/737542.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号