java 实现间隔k位翻转

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

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

思路:

问题的关键是有一个 能够翻转链表 head 到 tail 之间链表的方法

让我们看一下这个reserve(head , tail ),执行效果

图片说明
##代码

  // 翻转链表 head tail 
  public void reserve(ListNode head, ListNode tail){
        ListNode iter = head.next;
        head.next = tail.next;
        ListNode boundary = head.next;
        ListNode tep;
        while (iter != boundary){
            tep = head.next;
            head.next = iter;
            iter = iter.next;
            head.next.next = tep;
        }
    }



    public ListNode reverseKGroup (ListNode head, int k) {
        // write code here
        ListNode h = new ListNode(0);
        h.next = head;
        ListNode iter = h;
        ListNode l = h;
        int count = 0;
        ListNode tep;
        while (iter != null){
            if(count == k){
                //保存下新的左边界,其实就是原左边界的下一个
                tep = l.next;
                reserve(l , iter);
                l = tep;
                iter = l;
                count = 0;
            }
            iter = iter.next;
            count++;
        }

        return h.next;
    }
全部评论
请问为什么原左边界的下一个呢,不是k个一组反转么,不能是原左边界的k个么
点赞 回复 分享
发布于 2021-01-10 09:49

相关推荐

与火:这不接? 留子的钱不挣白不挣
点赞 评论 收藏
分享
10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务