zoukankan      html  css  js  c++  java
  • k个一组翻转链表

    给出一个链表,每 个节点一组进行翻转,并返回翻转后的链表。

    是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 的整数倍,那么将最后剩余节点保持原有顺序。

    示例 :

    给定这个链表:1->2->3->4->5

    当 = 2 时,应当返回: 2->1->4->3->5

    当 = 3 时,应当返回: 3->2->1->4->5

    public ListNode reverseKGroup(ListNode head, int k) {
            if(head == null) return head;
            //获取长度
            int len = getLength(head);
            //t表示可以逆转几组
            int t = len/k;
            //定义虚拟头结点
            ListNode dummy = new ListNode(-1);
            //定义sign标记结点
            ListNode sign = dummy;
            dummy.next = head;
            ListNode f = head;
            ListNode s = f.next;
            while(t>0){
                int m = k;
                //三指针逆转
                while(m>1&&f!=null){
                    f.next = s.next;
                    s.next = sign.next;
                    sign.next = s;
                    s = f.next;
                    m--;
                }
                //让sign指向当前f
                sign = f;
                //f指向当前s
                f = s;
                //判断f是否为空,为空直接返回
                if(f == null) break;
                //s指向s.next
                s = s.next;
                //逆转次数减一
                t--;
            }
            return dummy.next;
        }
    
        public static int getLength(ListNode head){
            ListNode cur = head;
            int count = 0;
            while(cur!=null){
                cur = cur.next;
                count++;
            }
            return count;
        }
  • 相关阅读:
    金融期货期权
    悲剧论——情感净化
    麻将
    后现代postmodern
    AlphaGo
    上帝已死——尼采
    牛顿迭代法
    浏览器访问homestead,由http自动转换为https
    Laravel框架原理(一)--Laravel中常用的PHP语法
    Android面试宝典(1)----android的基础知识
  • 原文地址:https://www.cnblogs.com/du001011/p/10668375.html
Copyright © 2011-2022 走看看