1. 程式人生 > >leetcode的python實現 刷題筆記83:刪除排序連結串列中的重複元素

leetcode的python實現 刷題筆記83:刪除排序連結串列中的重複元素

給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。

示例 1:

輸入: 1->1->2
輸出: 1->2

示例 2:

輸入: 1->1->2->3->3
輸出: 1->2->3
class Solution(object):
    def deleteDuplicates(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        # 定義一個空連結串列
        lianbiao = ListNode(None)
        # 然後將這個空連結串列的指向傳入的連結串列
        lianbiao.next = head
        # 用p來表示這個連結串列
        p = lianbiao

        # 當前節點存在並且當前節點的next指向也存在,就遍歷連結串列
        while p and p.next:
            # 判斷當前節點與下一個節點的大小關係
            if p.val == p.next.val:
                # 如果相等就把當前節點的next指向下下個節點的next,也就是相當於把下一個節點給刪除了
                p.next = p.next.next
            else:
                # 否則就繼續判斷下個節點與下下個節點間的關係
                p = p.next
        # 遍歷完後,返回修改後的連結串列
        return lianbiao.next

思路:

1.首先構造一個空連結串列與傳入的連結串列相結合,然後用一個比較簡單的字母代替連結串列。

2.然後遍歷連結串列,判斷當前的節點與下一個節點的值是否相等,如果相等,就把當前節點的next指向下下個節點,否則就繼續判斷下一個節點與下下個節點間的關係。

3.當所有節點遍歷完,發現最後一個節點沒有next後,,就跳出迴圈,返回修改後的連結串列

總結:

1.陣列和連結串列之間的區別與優缺點

2.連結串列的一些常用操作:

create_linked_list: __init__(),建立連結串列
is_empty():判斷該連結串列是否為空
append(value):在連結串列末新增node/值
insert(value, index):插入
delete(index):刪除
update(value, index):更新
get_value(index):查詢
get_length():獲取連結串列長度
clear():清空連結串列
print_linked_list():列印整個連結串列

3.空連結串列值關注值和next,其他連結串列則要關注值,head,next

4.連結串列的定義和用法https://www.cnblogs.com/king-ding/p/pythonchaintable.html