题解 | #链表中的节点每k个一组翻转#

链表中的节点每k个一组翻转

http://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e


/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @param k int整型 
     * @return ListNode类
     */
    public ListNode reverseKGroup (ListNode head, int k) {
        // write code here
        if (head == null || head.next == null || k < 2) {
            return head;
        }
        Deque<ListNode> dq = new LinkedList<>();
        ListNode dummyHead = new ListNode(-1);
        ListNode tail = dummyHead;
        ListNode cur = head;
        int i = k;
        int len = 0;
        while (cur != null) {
            len++;
            dq.offer(cur);
            cur = cur.next;
            i--;
            if (i == 0) {
                while (!dq.isEmpty()) {
                   ListNode node = dq.pollLast();
                   tail.next = node;
                   tail = node;
                }
                i = k;
            }
        } 
        if (len < k) {
            return head;
        }
        while (!dq.isEmpty()) {
            cur = dq.pollFirst();
            tail.next = cur;
            tail = cur;
        }
        tail.next = null;
        
        return dummyHead.next;
    }
}
全部评论

相关推荐

06-19 13:40
武汉大学 Java
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-18 16:32
quench@0916:一顿操作猛如虎,一看工资2500
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务