Sort by

recency

|

909 Discussions

|

  • + 0 comments
    public static SinglyLinkedListNode reverse(SinglyLinkedListNode llist) {
    

    if(llist == null) return null; if(llist.next == null) return llist;

        SinglyLinkedListNode curr = llist;
        SinglyLinkedListNode prev = null;
        SinglyLinkedListNode temp = null; 
    
        while(curr != null){
            temp = curr.next;
            //point curr node to prev
            curr.next = prev;
            //set prev = curr node
            prev = curr;
            curr = temp;
        }
    
        return prev;
    }
    
  • + 0 comments

    My Java solution with o(n) time complexity and o(1) space complexity:

    public static SinglyLinkedListNode reverse(SinglyLinkedListNode llist) {
            if(llist == null) return null;
            if(llist.next == null) return llist;
            
            SinglyLinkedListNode curr = llist;
            SinglyLinkedListNode prev = null;
            SinglyLinkedListNode temp = null; 
            
            while(curr != null){
                temp = curr.next;
                //point curr node to prev
                curr.next = prev;
                //set prev = curr node
                prev = curr;
                curr = temp;
            }
            
            return prev;
        }
    
  • + 0 comments

    Here is my c++ solution, you can watch video explanation here : https://youtu.be/F4nGusqPIu0

    SinglyLinkedListNode* reverse(SinglyLinkedListNode* llist) {
        SinglyLinkedListNode* reverse = nullptr;
        while(llist != nullptr){
            SinglyLinkedListNode* newNode = new SinglyLinkedListNode(llist->data);
            newNode ->next = reverse;
            reverse = newNode;
            llist = llist->next;
        }
        return reverse;
    }
    
  • + 0 comments

    My short and efficient recursive C++ solution:

    SinglyLinkedListNode* reverse(SinglyLinkedListNode* llist) {
        if (llist == nullptr) return nullptr;
        if (llist->next == nullptr) return llist;
        
        SinglyLinkedListNode* newHead = reverse(llist->next);
        llist->next->next = llist;
        llist->next = nullptr;
    
        return newHead;
    }
    
  • + 0 comments

    public static SinglyLinkedListNode reverse(SinglyLinkedListNode llist) { if (llist == null || llist.next == null) { return llist; }

    // Recursively reverse the rest of the list
    SinglyLinkedListNode newHead = reverse(llist.next);
    
    // Adjust pointers to reverse the list
    llist.next.next = llist; 
    llist.next = null;  
    
    return newHead; 
    }