最后一遍-L19. Remove Nth Node From End of List
Given the head of a linked list,
remove the nth 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:
* The number of nodes in the list is sz.
* 1 <= sz <= 30
* 0 <= Node.val <= 100
* 1 <= n <= sz
Follow up: Could you do this in one pass?
NOTE:链表的经典的问题
public class Solution {
/**
* 1-->2-->3-->4-->5, 2
*
* The number of nodes in the list is sz.
* 1 <= sz <= 30
* 0 <= Node.val <= 100
* 1 <= n <= sz
* n 小于head的长度
* */
public static ListNode removeNthFromEnd(ListNode head, int n) {
if(n==0) return head;
ListNode cur = head;
ListNode pre = head;
while(n >0){
cur=cur.next;
n--;
}
// 注意边界的情况
if(cur==null)return head.next;
while(cur.next != null){
cur=cur.next;
pre=pre.next;
}
if(pre.next != null){
pre.next=pre.next.next;
}
return head;
}
}