83. Remove Duplicates from Sorted List [easy] (Python)__Python

來源:互聯網
上載者:User
題目連結

https://leetcode.com/problems/remove-duplicates-from-sorted-list/ 題目原文

Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3. 題目翻譯

給定一個有序鏈表,重複資料刪除元素使每個元素之出現一次。 思路方法 思路一

遍曆所有節點,對於每個節點,檢查其後的一個節點是否與當前節點值相同,若相同則刪除後面的節點。迴圈下去。

代碼

# Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution(object):    def deleteDuplicates(self, head):        """        :type head: ListNode        :rtype: ListNode        """        p = head        while p:            if p.next and p.next.val == p.val:                p.next = p.next.next            else:                p = p.next        return head
思路二

遍曆所有節點,對於每個節點,從後一個節點開始一個個檢查是否與當前節點值相同,直到找到一個後面的節點其值與當前節點不同,刪除中間的所有與當前節點值相同的節點。迴圈下去。

代碼

# Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution(object):    def deleteDuplicates(self, head):        """        :type head: ListNode        :rtype: ListNode        """        p = q = head        while p:            while q and q.val == p.val:                q = q.next            p.next = q            p = q        return head
思路三

遞迴實現,本質上是從後向前檢查是否有相同的節點。

代碼

# Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution(object):    def deleteDuplicates(self, head):        """        :type head: ListNode        :rtype: ListNode        """        if not head or not head.next:            return head        head.next = self.deleteDuplicates(head.next)        return head if head.val != head.next.val else head.next

PS: 新手刷LeetCode,新手寫部落格,寫錯了或者寫的不清楚還請幫忙指出,謝謝。
轉載請註明:http://blog.csdn.net/coder_orz/article/details/51506143

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.