Skip to content

Commit 2fe8532

Browse files
solves remove nth node from end of linked list
1 parent 35c853b commit 2fe8532

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
| 16 | [3Sum Closest](https://leetcode.com/problems/3sum-closest) | [![Java](assets/java.png)](src/ThreeSumClosest.java) | |
2828
| 17 | [Letter Combinations of a Phone Number](https://leetcode.com/problems/letter-combinations-of-a-phone-number) | [![Java](assets/java.png)](src/LetterCombinationsOfAPhoneNumber.java) | |
2929
| 18 | [4Sum](https://leetcode.com/problems/4sum) | [![Java](assets/java.png)](src/FourSum.java) | |
30+
| 19 | [Remove Nth Node From End of List](https://leetcode.com/problems/remove-nth-node-from-end-of-list) | [![Java](assets/java.png)](src/RemoveNthNodeFromEndOfList.java) | |
3031
| 20 | [ValidParentheses](https://leetcode.com/problems/valid-parentheses/) | [![Java](assets/java.png)](src/ValidParentheses.java) [![Python](assets/python.png)](python/valid_parentheses.py) | |
3132
| 21 | [Merge 2 Sorted Lists](https://leetcode.com/problems/merge-two-sorted-lists/) | [![Java](assets/java.png)](src/Merge2SortedLists.java) [![Python](assets/python.png)](python/merge_2_sorted_lists.py) | |
3233
| 26 | [Remove Duplicates From Sorted Array](https://leetcode.com/problems/remove-duplicates-from-sorted-array/) | [![Java](assets/java.png)](src/RemoveDuplicatesFromSortedArray.java) [![Python](assets/python.png)](python/remove_duplicates_from_sorted_array.py) | |

src/RemoveNthNodeFromEndOfList.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
2+
public class RemoveNthNodeFromEndOfList {
3+
public static class ListNode {
4+
int val;
5+
ListNode next;
6+
ListNode() {}
7+
ListNode(int val) { this.val = val; }
8+
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
9+
}
10+
11+
public ListNode removeNthFromEnd(ListNode head, int n) {
12+
final int length = length(head);
13+
final int removalIndex = length - n;
14+
if (removalIndex == 0) return head.next;
15+
ListNode current = head;
16+
for (int i = 0 ; i < removalIndex - 1 ; i++) {
17+
current = current.next;
18+
}
19+
current.next = current.next.next;
20+
return head;
21+
}
22+
23+
private int length(ListNode head) {
24+
int count = 0;
25+
ListNode current = head;
26+
while (current != null) {
27+
count++;
28+
current = current.next;
29+
}
30+
return count;
31+
}
32+
}

0 commit comments

Comments
 (0)