Given the head of a linked list, remove the ��ℎ node from the end of the list and return its head.
Example 1:
- Input: head = [1,2,3,4,5], n = 2
- Output: [1,2,3,5]
Example 2:
- Input: head = [1], n = 1
- Output: []
Example 3:
- Input: head = [1,2], n = 1
- Output: [1]
Constraints:
双指针,维持两者之间的距离在n,这样第二个指针走到尽头的时候,第一个刚好跟尽头相差n
- class Solution {
- public ListNode removeNthFromEnd(ListNode head, int n) {
- ListNode dummy = new ListNode(0);
- dummy.next = head;
- ListNode first = dummy;
- ListNode second = dummy;
-
- for(int i = 0; i <= n; i++){
- first = first.next;
- }
-
- while(first != null){
- first = first.next;
- second = second.next;
- }
-
- second.next = second.next.next;
- return dummy.next;
- }
- }