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

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

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

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @param k int整型 
     * @return ListNode类
     */
    public ListNode reverseKGroup (ListNode head, int k) {
        // write code here
        ListNode test=head;
        ListNode pre=null;
        ListNode nextnode=null;
        ListNode prebegin=null;
        ListNode res=null;
        Deque<ListNode> prelist=new LinkedList<>();


        boolean a=true;
        boolean jump=false;
        int j=0;
        if(head==null || k==1){
            return head;
        }
        while(head!=null){
        System.out.println("第"+j+"次循环");
        test=head;
        for(int i=0;i<k;i++){
            if(test==null){
            a=false;
            break;
            } 
            else test=test.next;
        }
        //System.out.println(a);
         //prebegin=head;
         prelist.add(head);
        // System.out.println("firest prebegin = "+prebegin.val);
        if(a){
            for(int i=0;i<k;i++){
            System.out.println("head = "+head.val);  
            nextnode=head.next;
            if(i!=0){
            System.out.println("head= "+head.val+ " next ="+pre.val );
            head.next=pre;
            }
            pre=head;
            head=nextnode;
            }
            if(j==0){
                res=pre;
                System.out.println("begin = "+res.val);
            }
            else {
            System.out.println("b2222n = ");
            prebegin=prelist.remove();
            prebegin.next=pre;
            System.out.println("prebegin="+prebegin.val+ "  next= "+pre.val);
           }
        }
        else{
            jump=true;
             if(j==0){
                System.out.println("333");
                res=head;
                break;
            }
            System.out.println("111");
            prebegin=prelist.remove();
            prebegin.next=head;
            System.out.println("prebegin="+prebegin.val+ "  next= "+head.val);
            break;
        }
        System.out.println("jjj");
        j++;

        }

        if(!prelist.isEmpty()&& !jump){
             System.out.println("XXXX");
            prebegin=prelist.remove();
            prebegin.next=null;
            System.out.println("prebegin="+prebegin.val+ "  next= null ");
        }

        System.out.println("结果:"+res.val);
        test=res;
        while(test!=null){
            System.out.print(test.val+"->");
            test=test.next;
        }

        return res;
    }
}

全部评论

相关推荐

03-23 23:00
黄淮学院 Java
才浅Caiq:老家县城送外卖也5000,要求别这么低
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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