83. 删除排序链表中的重复元素
原始题目链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。
解题思路:
这道题是82题的简单版本,同样先链表判空,再看当前节点和当前节点的下一个节点的值是否相同,这次不用记录这个值,因为要保留一个值,遇到相同的直接修改next指针即可,具体实现看代码及注释。
代码实现:
# 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: ListNode) -> ListNode:
# 判空
if head is None:
return head
# 因为涉及到修改链表的操作
# 申请一个节点,方便返回最后调整好后的链表的头结点
dummy = ListNode(-1)
dummy.next = head
# 用于遍历的节点,初始化为dummy,指向原始链表的头节点
cur = dummy
# 判断是否存在节点和节点的下一个节点
while cur.next and cur.next.next:
if cur.next.val == cur.next.next.val:
# 修改当前节点next指针的指向
cur.next = cur.next.next
else:
cur = cur.next
return dummy.next