-
Notifications
You must be signed in to change notification settings - Fork 0
/
Solution.java
52 lines (46 loc) · 1.37 KB
/
Solution.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Finding middle element in a linked list
// Given a singly linked list of N nodes.
// The task is to find the middle of the linked list. For example, if the linked list is
// 1-> 2->3->4->5, then the middle node of the list is 3.
// If there are two middle nodes(in case, when N is even), print the second middle element.
// For example, if the linked list given is 1->2->3->4->5->6, then the middle node of the list is 4.
// Example 1:
// Input:
// LinkedList: 1->2->3->4->5
// Output: 3
// Explanation:
// Middle of linked list is 3.
// Example 2:
// Input:
// LinkedList: 2->4->6->7->5->1
// Output: 7
// Explanation:
// Middle of linked list is 7.
// Your Task:
// The task is to complete the function getMiddle() which takes a head reference as the only argument and should return the data at the middle node of the linked list.
// Expected Time Complexity: O(N).
// Expected Auxiliary Space: O(1).
// Constraints:
// 1 <= N <= 5000
class Solution
{
class Node{
int data;
Node next;
Node(int data) {
this.data = data;
this.next = null;
}
}
int getMiddle(Node head)
{
// Your code here.
Node fast = head;
Node slow = head;
while(fast != null && fast.next != null) {
fast = fast.next.next;
slow = slow.next;
}
return slow.data;
}
}