要求:
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。
返回同样按升序排列的结果链表。
- 示例 1
输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]
- 示例 2
输入:head = [1,1,1,2,3]
输出:[2,3]
详解代码
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
if not head:
return None
result = ListNode(0)
ans = result
curr = head
while curr:
value = curr.val
count = 0
while curr and curr.val == value:
curr = curr.next
count += 1
if count == 1:
result.next = ListNode(value)
result = result.next
return ans.next
解题思路:我们使用ListNode(0)这种方式可以将我们的新元素添加生成一个新的链表,我们循环分成两层,第一层对所有原链表元素进行循环,第二个循环完成相同元素的计数,计数不超过1个就将其添加到我们的新链表上。