zoukankan      html  css  js  c++  java
  • 删除链表中重复的结点 -python

    思路:因为重复的节点都要删除,因此需要标记重复开始前的上一个节点,又因为头结点有可能是重复的节点,为了操作方便,我们可以再链表前面设置一个空节点作为头结点,因此需要设置3个指针,第一个head指向头结点。第二个p用来标记重复节点的前面一个节点,第三个cur用来寻找重复的节点,一旦找到p就不移动了,cur继续往后寻找直到不是重复的节点。

    # -*- coding:utf-8 -*-
    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    class Solution:
        def deleteDuplication(self, pHead):
            # write code here
            head = ListNode(-1)
            p = head
            p.next = pHead
            cur = pHead
            while cur and cur.next:
                if cur.val != cur.next.val:
                    p = p.next
                    cur = cur.next
                else:
                    val = cur.val
                    while cur and cur.val == val:
                        cur = cur.next
                    p.next = cur
            return head.next
    
  • 相关阅读:
    hdu 4403 枚举
    hdu 4405概率dp
    lightoj 1036 dp
    lightoj 1033 区间dp
    lightoj 1032 二进制的dp
    hdu 4293 dp求最大权值不重合区间
    poj 2449 第k短路
    hdu 4284 状态压缩
    hdu4281 区间dp
    poj 2288 tsp经典问题
  • 原文地址:https://www.cnblogs.com/dolisun/p/11337768.html
Copyright © 2011-2022 走看看