链表问题---删除无序单链表中值重复出现的节点
2017-11-19 10:28
246 查看
【题目】
给定一个无序单链表的头节点head,删除其中值重复出现的节点。
请按以下要求实现两种方法。
方法一。时间复杂度O(N)。
方法二。空间复杂度O(1)。
【基本思路】
方法一。利用哈希表,依次遍历每一个节点,如果这个节点的值已经存在于哈希表中,将该节点删除;否则,将该节点的值添加到哈希表中。代码实现如下:
方法二。时间复杂度O(N2),空间复杂度O(1)。
遍历每一个节点,假设遍历到位置i,从i位置开始遍历之后所有的节点,把值相同的节点的删除。代码实现如下:
给定一个无序单链表的头节点head,删除其中值重复出现的节点。
请按以下要求实现两种方法。
方法一。时间复杂度O(N)。
方法二。空间复杂度O(1)。
【基本思路】
方法一。利用哈希表,依次遍历每一个节点,如果这个节点的值已经存在于哈希表中,将该节点删除;否则,将该节点的值添加到哈希表中。代码实现如下:
#python3.5 def removeRepeatNode(head): if head == None or head.next == None: return head hashSet = set() pre = head cur = head.next hashSet.add(head.val) while cur != None: next = cur.next if cur.val not in hashSet: hashSet.add(cur.val) pre = cur else: pre.next = next cur = next
方法二。时间复杂度O(N2),空间复杂度O(1)。
遍历每一个节点,假设遍历到位置i,从i位置开始遍历之后所有的节点,把值相同的节点的删除。代码实现如下:
def removeRepeatNode2(head): if head == None or head.next == None: return head while head != None: pre = head cur = head.next while cur != None: if cur.val == head.val: pre.next = cur.next else: pre = cur cur = cur.next head = head.next
相关文章推荐
- [算法]删除无序单链表中值重复出现的节点
- 删除无序链表中值重复出现的节点
- 算法优解(8)-删除无序单链表中重复出现的节点
- Java编程删除链表中重复的节点问题解决思路及源码分享
- 【IT笔试面试题整理】删除无序链表中重复的节点
- 删除链表中重复的节点
- 【剑指**】18.2-删除链表中的重复节点
- 删除链表中所有符合要求的数据节点问题
- 剑指offer(LintCode):112. 删除链表中重复节点I VS 113.删除链表中重复节点II
- 删除链表中重复的节点
- 删除无序链表中的重复值
- 【问题描述】1.创建单链表;2.然后删除重复的节点 ?
- 【剑指offer-解题系列(57)】删除链表中重复的节点
- 删除有序链表中的重复节点
- 8.剑指offer-删除链表中重复节点
- 单链表节点删除问题
- 删除链表重复节点
- [C++]链表中删除连续重复出现的结点
- 链表问题 在单链表和双链表中删除倒数第K个节点
- 删除链表中的重复节点