这是关于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;
}
};
答案 0 :(得分: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;