chipbk10 / Leetcode

1 stars 2 forks source link

LinkedList #177

Open chipbk10 opened 9 months ago

chipbk10 commented 9 months ago
     private ListNode middle(ListNode head) {

        ListNode dummy = new ListNode(0);
        dummy.next = head;

        ListNode slow = dummy, fast = dummy;
        while (fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
        }

        return slow;
    }

    private ListNode reverse(ListNode head) {
        ListNode node = head, previous = null;
        while (node != null) {
            ListNode nextNode = node.next;
            node.next = previous;
            previous = node;
            node = nextNode;
        }
        return previous;
    }

    private ListNode merge(ListNode list1, ListNode list2) {
        ListNode dummyNode = new ListNode(0);        
        ListNode list3 = dummyNode;

        while (list1 != null && list2 != null) {
            ListNode next1 = list1.next;
            ListNode next2 = list2.next;

            list3.next = list1;
            list3.next.next = list2;
            list3 = list3.next.next;

            list1 = next1;
            list2 = next2;
        }                

        if (list1 != null) list3.next = list1;
        if (list2 != null) list3.next = list2;

        return dummyNode.next;
    }

    private void print(ListNode head) {
        String s = "";
        while (head != null) {
            s += " " + head.val;
            head = head.next;
        }
        System.out.println(s);
    }