-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathp180.java
61 lines (53 loc) · 1.42 KB
/
p180.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
53
54
55
56
57
58
59
60
61
/*Given a linked list consisting of L nodes and given a number N. The task is to find the Nth node from the end of the linked list.
Example 1:
Input:
N = 2
LinkedList: 1->2->3->4->5->6->7->8->9
Output: 8
Explanation: In the first example, there
are 9 nodes in linked list and we need
to find 2nd node from end. 2nd node
from end is 8.
Example 2:
Input:
N = 5
LinkedList: 10->5->100->5
Output: -1
Explanation: In the second example, there
are 4 nodes in the linked list and we
need to find 5th from the end. Since 'n'
is more than the number of nodes in the
linked list, the output is -1.
Your Task:
The task is to complete the function getNthFromLast() which takes two arguments: reference to head and N and you need to return Nth from the end or -1 in case node doesn't exist.
Note:
Try to solve in a single traversal.
Expected Time Complexity: O(N).
Expected Auxiliary Space: O(1).
Constraints:
1 <= L <= 106
1 <= N <= 106*/
/* Structure of node
class Node
{
int data;
Node next;
Node(int d) {data = d; next = null; }
}*/
class Solution{
int getNthFromLast(Node head, int n){
Node first = head;
Node second = head;
for (int i = 1; i <= n; i++) {
if (second == null) {
return -1;
}
second = second.next;
}
while (second != null) {
first = first.next;
second = second.next;
}
return first.data;
}
}