leedcode 83 Remove Duplicates from Sorted List

 

83Remove Duplicates from Sorted List    40.20%删去listnode中的重复元素,a.next=a.next.next(单链表的删除)

 

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Feb  8 17:59:50 2018

@author: vicky
"""
#参见21题

#Definition for singly-linked list.
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None
    def display(self):
        while self:
            print(self.val)
            self=self.next

class Solution:
    def deleteDuplicates(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        a=head #listnode跟list一样都为可变变量,对a改变同时head也 有可能 改变
        while a and a.next:
            if a.val!=a.next.val:
                #a.next=ListNode(a.next.val) 错误!!
                #不能用这种写法,type会报错,直接用next覆盖:
                a=a.next     #head不变,why???
            else:
                a.next=a.next.next #head变,把重复的点跳过
#            head.display()
#            print('/n/')
#            a.display()
        return head
    
#eg:变化过程
#           1!=2   2!=1  1=1
#head 1211  1211  1211   121(why???)
#a    1211  211   11     1


head=ListNode(1)
head.next=ListNode(2)
head.next.next=ListNode(1)
head.next.next.next=ListNode(1)
head.next.next.next.next=ListNode(1)
ans=Solution().deleteDuplicates(head)
ans.display()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值