从排序列表中删除重复项不通过所有测试用例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从排序列表中删除重复项不通过所有测试用例相关的知识,希望对你有一定的参考价值。
这是关于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;
}
};
答案
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;
以上是关于从排序列表中删除重复项不通过所有测试用例的主要内容,如果未能解决你的问题,请参考以下文章
java 82.从排序列表II(递归).java中删除重复项
java 82.从排序列表II(递归).java中删除重复项