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;
        }
  • 相关阅读:
    DOM操作:
    定时器
    7.thinkphp框架控制器
    1.thinkphp框架介绍
    4.thinkphp框架url访问
    6.thinkphp框架路由
    2.thinkphpk框架基础
    5.thinkphp框架配置文件
    3.thinkphp框架入口文件
    8.thinkphp框架数据库
  • 原文地址:https://www.cnblogs.com/du001011/p/10668375.html
Copyright © 2011-2022 走看看