从排序列表中删除重复项不通过所有测试用例

问题描述 投票:-3回答:1

这是关于leetcode的问题。出于某种原因,我的代码仅适用于7/164测试用例。我想知道为什么我的算法效率不高。这是什么解决方案?我的代码出了什么问题?这里是问题https://leetcode.com/problems/remove-duplicates-from-sorted-list/description/的链接

编辑:我已经采取了建议和编辑的代码,但我的算法仍然没有通过,我得到一个时间限制超过错误。算法有效吗?

class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
    ListNode* current = head;
    ListNode* nex;

    while(current!=NULL){
        nex=current->next;
        if (nex==NULL)
            break;


        if(current->val==nex->val)
            current->next=nex->next;
        if (current->next==NULL)
            break;
        current==current->next;
         if(current->next==NULL)
            break;



    }
    return current;

}

};

c++ algorithm linked-list duplicates singly-linked-list
1个回答
2
投票

nex未初始化。在初始化之前,您尝试将其与NULL进行比较。

您只删除邻居对的重复项。排序列表没问题。

你遇到内存泄漏。

最后两个if是奇怪的。

我认为你从函数返回的不是预期的。

使用==应该使用=

current改变之后你不应该改变current->next

while (current && (nex = current->next)){
    if (current->val == nex->val) {
        current->next = nex->next;
        delete nex;
    } else {
        current = current->next;
    }
}
return head;
© www.soinside.com 2019 - 2024. All rights reserved.