美文网首页
Reverse Nodes in k-Group

Reverse Nodes in k-Group

作者: 我知他风雨兼程途径日暮不赏 | 来源:发表于2020-05-16 18:24 被阅读0次

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/reverse-nodes-in-k-group
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    1.TITLE

    Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.
    k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.

    • Example:
    Given this linked list: 1->2->3->4->5
    
    For k = 2, you should return: 2->1->4->3->5
    
    For k = 3, you should return: 3->2->1->4->5
    
    • Note:
      Only constant extra memory is allowed.
      You may not alter the values in the list's nodes, only nodes itself may be changed.

    2. JAVA PROGRAM

    Time Complexity:O(N),Space Complexity:O(1)
    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
       public ListNode reverseKGroup(ListNode head, int k) {
            if(head == null || k==0){
                return head;
            }
            ListNode first = head;
            ListNode last = null,flag = first;
            for(int i=0;i<k;i++){
                if(flag == null){
                    return head;
                }
                last = flag;
                flag = flag.next;
            }
            last.next = null;
            head = reverseList(head);
            first.next = reverseKGroup(flag,k);
            return head;
        }
    
        public  ListNode reverseList(ListNode list){
            if(list==null || list.next==null){
                return list;
            }
    
            ListNode preNode = null,afterNode = null,curentNode = null;
            curentNode = list.next;
            preNode = list;
            while(curentNode!=null){
                afterNode = curentNode.next;
                curentNode.next = preNode;
                preNode = curentNode;
                curentNode = afterNode;
            }
            return preNode;
        }
    }
    

    相关文章

      网友评论

          本文标题:Reverse Nodes in k-Group

          本文链接:https://www.haomeiwen.com/subject/itprohtx.html