zoukankan      html  css  js  c++  java
  • LeetCode 25 Reverse Nodes in k-Group Add to List (划分list为k组)

     
    Problem :将一个有序list划分为k个组,并且每个组的元素逆置
     
    链表操作 :递归算法 
        每次寻找到该组的尾部,然后进行逆置操作,返回头部,这样每次递归操作之后能够进行下一次的逆置操作。
        链表操作画图比较形象!!!!
    对于递归算法:找到共同点,找到程序退出点,注意特殊情况
          本题中,共同点为每组为k个节点,并且每组进行的操作均为逆置操作。
          程序退出点,每次返回逆置后的头部,这样最终结果为头部
    特殊情况:该链表中的节点个数不是k的整数倍,最后剩下的不需要进行逆置操作!!
     
    参考代码:
    package leetcode_50;
    
    
    /***
     * 
     * @author pengfei_zheng
     * list划分为k组并且逆置
     */
    public class Solution25 {
        public class ListNode {
             int val;
             ListNode next;
             ListNode(int x) { val = x; }
         }
        public ListNode reverseKGroup(ListNode head, int k) {
            ListNode curr = head;
            int count = 0;
            while (curr != null && count != k) { // find the k+1 node
                curr = curr.next;
                count++;
            }
            if (count == k) { // if k+1 node is found
                curr = reverseKGroup(curr, k); // reverse list with k+1 node as head
                // head - head-pointer to direct part, 
                // curr - head-pointer to reversed part;
                while (count-- > 0) { // reverse current k-group: 
                    ListNode tmp = head.next; // tmp - next head in direct part
                    head.next = curr; // preappending "direct" head to the reversed list 
                    curr = head; // move head of reversed part to a new node
                    head = tmp; // move "direct" head to the next node in direct part
                }
                head = curr;
            }
            return head;
        }
    }
     
  • 相关阅读:
    网络 图片缓存
    大流量 网站
    20个 css3 html5 设计工具
    tomcat6.0 内存设置
    销售订单流程图
    android 自带 xml解析
    常见边框
    Expanding Cat5e LAN segments over 100 metres using OUTREACH Ethernet LAN extenders
    CPU频率和FSB瓶颈
    SmallNetBuilder's Wireless FAQ: The Essentials
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/6527370.html
Copyright © 2011-2022 走看看