Middle Of LinkedList problem LeetCode

 Given the head of a singly linked list, return the middle node of the linked list.


If there are two middle nodes, return the second middle node.


 


Example 1:



Input: head = [1,2,3,4,5]

Output: [3,4,5]

Explanation: The middle node of the list is node 3.

Example 2:



Input: head = [1,2,3,4,5,6]

Output: [4,5,6]

Explanation: Since the list has two middle nodes with values 3 and 4, we return the second one.

 


Constraints:


The number of nodes in the list is in the range [1, 100].

1 <= Node.val <= 100

Solution :


method 1:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode middleNode(ListNode head) {
         ListNode slow = head, fast = head;

        while (fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
        }
       
        return slow;
       
    }
}




method 2-


/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode middleNode(ListNode head) {
         int count = 0;
        ListNode tail = head;

        // First pass: Count the number of nodes
        while (tail != null) {
            count++;
            tail = tail.next;
        }
       
        count = count / 2; // Find the middle index

        // Second pass: Move to the middle node (tail move to front from end)
        tail = head;

        while (count > 0) { // Use count > 0 instead of count--
            tail = tail.next;
            count--;
        }
       
        return tail;
       
    }
}

Comments

Popular posts from this blog

Two Sum II - Input Array Is Sorted

Comparable Vs. Comparator in Java

Increasing Triplet Subsequence