leetcode 83. Remove Duplicates from Sorted List (python)
描述
Given the head of a sorted linked list, delete all duplicates such that each element appears only once. Return the linked list sorted as well.
Example 1:
Input: head = [1,1,2] Output: [1,2]复制代码
Example 2:
Input: head = [1,1,2,3,3] Output: [1,2,3]复制代码
Note:
The number of nodes in the list is in the range [0, 300]. -100 <= Node.val <= 100 The list is guaranteed to be sorted in ascending order.复制代码
解析
根据题意,就是给出了一个已经排好序的链表头节点 head ,要求我们取掉链表中的重复的节点,返回来的结果链表仍然是排好序的,这道题其实就是考察我们遍历链表节点和删除链表节点的基本操作,思路比较简单:
从遍历链表 head
如果 head 为空,直接返回 head
如果 head 没有下一个节点,其本身就是没有重复节点的链表,直接返回 head
初始化结果 result ,赋值为 head
while 循环,当 head 为真且 head.next 为真的时候,如果 head 的下一个节点和当前节点值相等,直接让当前节点直接连接到下一个节点的下一个节点,重复该过程
最后直接返回 result
解答
class ListNode(object): def __init__(self, val=0, next=None): self.val = val self.next = next class Solution(object): def deleteDuplicates(self, head): """ :type head: ListNode :rtype: ListNode """ if not head :return head if head and not head.next: return head result = head while head and head.next: if head.val == head.next.val: head.next = head.next.next else: head = head.next return result 复制代码
运行结果
Runtime: 42 ms, faster than 23.95% of Python online submissions for Remove Duplicates from Sorted List. Memory Usage: 13.7 MB, less than 13.02% of Python online submissions for Remove Duplicates from Sorted List.复制代码
原题链接:leetcode.com/problems/re…
您的支持是我最大的动力
作者:王大呀呀
链接:https://juejin.cn/post/7019496984805539847