给定一个链表,移除链表中的重复项
样例链表:
1->2->2->2->3->4->5->6->6->7->8
输出链表:
1->2->3->4->5->6->7->8
Solution
# This is an input class. Do not edit.
class LinkedList:
def __init__(self, value):
self.value = value
self.next = None
def print_linked_list(self):
while self is not None:
print(f"{self.value}->",end = '')
self = self.next
def removeDuplicatesFromLinkedList(linkedList):
current_node = linkedList
while current_node is not None and current_node.next is not None:
# print(current_node.value)
next_node = current_node.next
while next_node is not None and next_node.value == current_node.value:
next_node = next_node.next
current_node.next = next_node
current_node = next_node
return linkedList
list_code = [1,2,2,2,3,4,5,6,6,7,8]
# for _ in range(len(list_code)):
# print(f"node_{_} = LinkedList({list_code[_]})")
# if _ >0:
# print(f"node_{_-1}.next = node_{_}")
node_0 = LinkedList(1)
node_1 = LinkedList(2)
node_0.next = node_1
node_2 = LinkedList(2)
node_1.next = node_2
node_3 = LinkedList(2)
node_2.next = node_3
node_4 = LinkedList(3)
node_3.next = node_4
node_5 = LinkedList(4)
node_4.next = node_5
node_6 = LinkedList(5)
node_5.next = node_6
node_7 = LinkedList(6)
node_6.next = node_7
node_8 = LinkedList(6)
node_7.next = node_8
node_9 = LinkedList(7)
node_8.next = node_9
node_10 = LinkedList(8)
node_9.next = node_10
print("原始链表:")
node_0.print_linked_list()
node_0 = removeDuplicatesFromLinkedList(node_0)
print("\n 去重后的链表:")
# print(type(node_0))
node_0.print_linked_list()
# Time:O(n)
# sapce: O(1)
输出:
原始链表:
1->2->2->2->3->4->5->6->6->7->8->
去重后的链表:
1->2->3->4->5->6->7->8->[Finished in 0.6s]