LeetCode每日一题2020.6.26 面试题 02.01. 移除重复节点
Posted enmac
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode每日一题2020.6.26 面试题 02.01. 移除重复节点相关的知识,希望对你有一定的参考价值。
面试题 02.01. 移除重复节点
编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。
示例:
输入:[1, 2, 3, 3, 2, 1]
输出:[1, 2, 3]输入:[1, 1, 1, 1, 2]
输出:[1, 2]
分析:
? 链表结点移除的本质就是 将被删除结点的前驱结点连向后继结点。下一步可以用HashSet判断重复。由于单向链表结点结构中没有前驱指针,因此我们可以直接对被删除结点的前驱结点进行操作,即pos.next。这样写出来的代码更加简洁。
代码(Python):
class Solution:
def removeDuplicateNodes(self, head: ListNode) -> ListNode:
if not head:
return head
occurred = {head.val}
pos = head
# 枚举前驱节点
while pos.next:
# 当前待删除节点
cur = pos.next
if cur.val not in occurred:
occurred.add(cur.val)
pos = pos.next
else:
pos.next = pos.next.next
return head
以上是关于LeetCode每日一题2020.6.26 面试题 02.01. 移除重复节点的主要内容,如果未能解决你的问题,请参考以下文章
《LeetCode之每日一题》:16.面试题 17.04. 消失的数字
LeetCode每日一题2020.6.9 面试题46. 把数字翻译成字符串
leetcode每日一题(2020-06-26):面试题 02.01. 移除重复节点
leetcode每日一题(2020-4-28):面试题56 - I. 数组中数字出现的次数