0
点赞
收藏
分享

微信扫一扫

双碳目标下基于遥感技术的碳储量、碳收支、碳循环等多领域监测与模拟实践技术应用

链表篇

参考题解 

 

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseKGroup(ListNode head, int k) {
        //哨兵节点
         ListNode dummy=new ListNode(0);
         dummy.next=head;
        //两个节点同位置一起从哨兵位置出发
         ListNode pre=dummy;
         ListNode end=dummy;
         
         while(end.next!=null){
            for(int i=0;i<k&&end!=null;i++) end=end.next;
            if(end==null) break;
            ListNode start=pre.next;
            ListNode next=end.next;
            end.next=null;
            pre.next=reverse(start);
            start.next=next;
            pre=start;

            end=pre;
         }
         return dummy.next;
    }

    //翻转链表
    private ListNode reverse(ListNode head){
        //前后节点
        ListNode pre =null;
        ListNode curr=head;
        //翻转相邻节点--》翻转链表
        while(curr!=null){
            ListNode next=curr.next;
            curr.next=pre;
            pre=curr;
            curr=next;
        }
        //pre代表最后一个节点
        return pre;
    }
}

 

举报

相关推荐

0 条评论