zoukankan      html  css  js  c++  java
  • 牛客网-Python-删掉链表中重复的节点

    题目描述

    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

    思路

    链表为排序链表,则可以设置两个指针前后同时移动,同时判断后指针的下一节点是否和它相同。

    若相同则循环删除,最后把该节点删掉。

    不同则继续移动。

    代码

    千补万补 写出来的。。。看完讨论觉得自己写的挺棒的哈哈哈,怀疑他们的不会内存泄漏吗。。。

    # -*- coding:utf-8 -*-
    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    class Solution:
        def deleteDuplication(self, pHead):
            # write code here
            if pHead == None:
                return
            fast = pHead
            slow = ListNode(pHead.val-1)
            slow.next = fast
            
            while(fast!=None and fast.next!=None):
                if fast.val!=fast.next.val:
                    slow = slow.next
                    fast = fast.next
                else:
                    while(fast != None and fast.next != None and fast.val==fast.next.val):
                        temp = fast.next
                        fast.next = temp.next
                        del temp
                    temp = fast
                    if fast==pHead:
                        pHead = fast.next
                        slow = fast
                    slow.next = fast.next
                    del temp
                    fast = slow.next
            return pHead
  • 相关阅读:
    Centos7-两台Centos机器间复制文件
    Centos7-卸载自带的jdk 安装jdk8
    java网络编程_IP地址
    多线程下单例模式的实现_ThreadLocal_ReentrantLock
    线程定时调度
    线程通信
    线程同步学习一
    java线程学习2
    java线程学习1
    工单系统的设计与实现(3)
  • 原文地址:https://www.cnblogs.com/ditingz/p/12274237.html
Copyright © 2011-2022 走看看