25. Reverse Nodes in k-Group

Link

Solution

這題我的想法是跟reverse partial list那題類似只是多增加判斷是否可以revese

  public ListNode reverseKGroup(ListNode head, int k) {
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        ListNode prev = dummy;
        ListNode start = prev.next;
        ListNode then = start.next;
        while(hasLength(start, k)){
            for(int i = 0; i < k-1; i++){
                start.next = then.next;
                then.next = prev.next;
                prev.next = then;
                then = start.next;
            }
            prev = start;
            start = start.next;
            if(start == null){
                break;
            }
            then = start.next;
        }
        return dummy.next;
        
    }
    public boolean hasLength(ListNode node, int len){
        
        while(len != 0){
            
            if(node == null) return false;
            node = node.next;
            len--;
        }
        return true;
        
    }

Last updated

Was this helpful?