# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
# Solution1
"""
cur = head # 记录当前节点
# 如果cur==None那么空链表直接返回
# 如果cur.next==None那么链表只有一个节点直接返回
# 如果链表至少有2个节点,进入下面的循环
while cur and cur.next:
# 如果出现了重复的元素,那么删除重复的元素,只保留一个重复的元素
if cur.val == cur.next.val:
# 找到重复元素的最后一个记作p
p = cur.next
while p.next and p.next.val==p.val:
p = p.next
# 删除重复的元素,只保留一个重复的元素
cur.next = p.next
# 如果不是重复的元素,什么都不做
# 那么cur指针移动到下一个位置
cur = cur.next
return head
"""
# Solution2:代码更简洁了
cur = head # 记录当前节点,保证当前节点永远不是重复的元素
# 如果cur==None那么空链表直接返回
# 如果cur.next==None那么链表只有一个节点直接返回
# 如果链表至少有2个节点,进入下面的循环
while cur and cur.next:
# 如果出现了重复的元素,那么删除那个重复的元素,cur的next指向cur的next的next
if cur.val == cur.next.val:
cur.next = cur.next.next
else:
# 如果当前节点不是重复的元素,那么cur往下一个位置移动
cur = cur.next
return head
【leetcode】Delete duplicate elements in sorted list
Guess you like
Origin blog.csdn.net/ningmengzhihe/article/details/127823999
Recommended
Ranking