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

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

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

import java.util.*;

/*
 * 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) {
        
        ListNode top = new ListNode(0);
        ListNode pre=top;
        ListNode tail = top;
        
        if(k<2){
            return head;
        }
        
        int i=1;
        while( head!=null ){
            if(i==k+1){
                pre=tail;
                i=1; 
            }
            if(i==1){
                tail = head;
            } 
            
            ListNode temp = head.next;
            head.next = pre.next;
            pre.next = head;
            head = temp;
            
            i++;
        }
        
        if(i<=k&&i>2){
            head = pre.next;
            pre.next=null;
            while(head!=null){
                ListNode temp = head.next;
                head.next = pre.next;
                pre.next = head;
                head = temp;
            }
        }
        return top.next;
        
        
    }
}

解体思路:不管是不是满足k个,直接反转。最后判断最后一个是不是k个,如果不满足k,则再反转回去即可。
全部评论

相关推荐

企业都这么缺人了吗?缺人为什么还给白菜价!
真起不了响亮的名字:我给你出个主意,把公司报出来,让牛友去投,岂不美哉
点赞 评论 收藏
分享
好在哪里了?我请问了?
_hengheng:很好啊,我看旁边同事都入职了都有工作
点赞 评论 收藏
分享
自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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