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
  • 相关阅读:
    Nginx入门
    Spring基础知识汇总 Java开发必看
    java ArrayList倒序
    1
    js event 的target 和currentTarget
    java 文件的写入和读取
    DOMContentLoaded与load的区别
    JS中先有Object还是先有Function?
    JSON.stringify的三个参数
    Java的泛型约束和限制
  • 原文地址:https://www.cnblogs.com/ditingz/p/12274237.html
Copyright © 2011-2022 走看看