summary:
2 pointers
package myapp.kit.leetcode.top100liked;
/**
* 19
* medium
* https://leetcode.com/problems/remove-nth-node-from-end-of-list/
*
* Given a linked list, remove the n-th node from the end of list and return its head.
*
* Example:
*
* Given linked list: 1->2->3->4->5, and n = 2.
*
* After removing the second node from the end, the linked list becomes 1->2->3->5.
* Note:
*
* Given n will always be valid.
*
* Follow up:
*
* Could you do this in one pass?
*
*
* @author Dingsheng Huang
* @version 1.0.0 2020/5/10 23:50
*/
public class RemoveNthNodeFromEndOfList {
// 2 pointers
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode p1 = head;
ListNode p2 = head;
for (int i = 0; i < n; i++) {
p1 = p1.next;
}
while (p1.next != null) {
p1 = p1.next;
p2 = p2.next;
}
// remove p2.next
p2.next = p2.next.next;
return head;
}
}