从列表运行时末尾错误

时间:2016-11-17 19:55:25

标签: runtime-error

给出链表: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;
    }
    }
};

0 个答案:

没有答案