• + 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;
        }