leetcode的python實現 刷題筆記83:刪除排序連結串列中的重複元素
阿新 • • 發佈:2018-11-25
給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。
示例 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後,,就跳出迴圈,返回修改後的連結串列
總結:
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