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?
代码:
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
int len = 1;
ListNode* h1 = head;
while(h1->next){
h1 = h1->next;
len++;
}
if(n == len){
return head->next;
}
int x = len-n;
h1 = head;
while(x!=1){
x--;
h1 = h1->next;
}
h1->next = h1->next->next;
return head;
}
};
|