zoukankan      html  css  js  c++  java
  • leetcode刷题-82.删除排序链表中的重复元素 II

    题目

    给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。

    示例 1:

    输入: 1->2->3->3->4->4->5
    输出: 1->2->5

    思路

    不断的遍历链表中的每个元素,若该元素的值和前后元素的值都不相等,则该元素就是独一无二的,把它加入结果链表里。

    在实现的过程中,在提供的链表前新增一个空节点开始遍历。当节点运行到i时,考验的是i.next的与前后值的关系。

    实现

    # Definition for singly-linked list.
    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution:
        def deleteDuplicates(self, head: ListNode) -> ListNode:
            if not head:
                return None
            result = res_pointer = ListNode(None)
            pointer = ListNode(None)
            pointer.next = head
            while pointer.next.next:
                if pointer.val != pointer.next.val != pointer.next.next.val:
                    res_pointer.next = pointer.next
                    res_pointer = res_pointer.next
                pointer = pointer.next
            if pointer.val != pointer.next.val:
                res_pointer.next = pointer.next
                res_pointer = res_pointer.next
            res_pointer.next = None
            return result.next
  • 相关阅读:
    Oracle的序列、视图、索引和表空间
    MySQL存储过程
    MySQL触发器
    MySQL索引和视图
    完整性约束
    Mybatis的核心对象及运行流程
    Mybatis中配置连接池
    IDEA中创建Maven工程整合Mybatis
    Idea中创建JavaWeb工程
    实现整数集合的并、交、差运算
  • 原文地址:https://www.cnblogs.com/mgdzy/p/13490370.html
Copyright © 2011-2022 走看看