给出链表:1-> 2-> 3-> 4-> 5,n = 2.
从末尾移除第二节点后,链表变为1-> 2-> 3-> 5。
嗨,我可以在我的电脑上运行我的代码,但是leetcode总是说Runtime Error
。我在记忆中做错了吗?我跑了同样的情况,leetcode说我错了。
我相信我检查了所有角落的情况。
输入[1,2]输出[2]
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
if(!head) return head;
ListNode* tmp =head;
int size =1;
while(tmp->next){
tmp=tmp->next;
size++;
}
if(n>size) return head;
ListNode* prev = head;
//delete the head
if (n==size){
if(prev->next){
prev=prev->next;
delete head;
head = prev;
return head;
} else {
delete head;
return NULL;
}
}else {
for (int j=0; j<size-n-1; j++) {
prev = prev->next;
}
tmp=prev->next;
//if tail, delete, else reconnect.
if (tmp->next){
prev->next = tmp->next;
}
delete tmp;
return head;
}
}
};