我正在尝试解决此问题- 从排序的链表中删除重复值
我正在为某些其他测试用例工作时,某些测试用例出现运行时错误。如果有人可以提出一些有关如何优化代码的方法,那将意味着很多。
#
# For your reference:
#
# SinglyLinkedListNode:
# int data
# SinglyLinkedListNode next
#
#
def removeDuplicates(head):
if head is None:
return None
else:
current = head
prev = SinglyLinkedListNode("")
prev.next = head
while current.next != None:
if prev.data != current.data:
prev = prev.next
current = current.next
else:
current = current.next
while(prev.data == current.data):
current = current.next
prev.next = current
prev = prev.next
current = current.next
if current.next == None:
if prev.data != current.data:
prev = prev.next
else:
prev.next = None
return head
我认为这部分会让您困惑:
while(prev.data == current.data):
current = current.next
prev.next = current
prev = prev.next
current = current.next
如果触发了循环,那么在您假设链接包含下一个项目(可能没有)之后,我可能会在此处进行检查,以防止发生这种情况。
可能是这样的:
while (current != None && prev.data == current.data):
current = current.next;
prev.next = current;
prev = prev.next;
实际上,我们是否真的需要紧随其后的“ current = current.next”行?并且,如果遵循以下逻辑,我们是否已经不在大while循环中进行None检查了,并且在我们在此处修复的循环结束时是否还没有prev已经是None?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。