Remove Nth Node From End of List

Leetcode 19.

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
/**
* 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 removeNthFromEnd(ListNode head, int n) {
ListNode temp = head;
int length = 0;
while(temp != null){
temp = temp.next;
length++;
}
int stop = length - n;
ListNode newOne = head;
//remove the first node
if(stop == 0){
head = head.next;
}
while(stop > 0){
if(stop > 1){
newOne = newOne.next;
}else{
//remove the the nth node from the end of the list
newOne.next = newOne.next.next;
}
stop--;
}
return head;
}
}