給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。
示例 1:
輸入: 1->1->2
輸出: 1->2
示例 2:
輸入: 1->1->2->3->3
輸出: 1->2->3
思路1: hash存key
# definition for singly-linked list.
# class listnode:
# def __init__(self, val=0, next=none):
# self.val = val
# self.next = next
class
solution
:def
deleteduplicates
(self, head: listnode)
-> listnode:
if head is
none
:return head
node_set =
pre = head
cur = head.
next
while cur is
notnone
:if cur.val in node_set:
pass
else
: node_set.add(cur.val)
pre.
next
= cur
pre = cur
cur = cur.
next
pre.
next
=none
return head
思路2: 原地刪除重複
# definition for singly-linked list.
# class listnode:
# def __init__(self, val=0, next=none):
# self.val = val
# self.next = next
class
solution
:def
deleteduplicates
(self, head: listnode)
-> listnode:
if head is
none
:return head
cur = head
while cur is
notnone
: cur2 = cur.
next
pre = cur
while cur2 is
notnone
:if cur2.val == cur.val:
pre.
next
= cur2.
next
cur2 = cur2.
next
else
:next
= cur2.
next
pre = cur2
cur2 =
next
cur = cur.
next
return head
83 刪除排序鍊錶中的重複元素
給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。示例 1 輸入 1 1 2 輸出 1 2 示例 2 輸入 1 1 2 3 3 輸出 1 2 3 看了下執行時間最快的演算法,分析了一下,leetcode程式設計都不注意記憶體 的嘛,以空間換時間 好像不是一般我們說的空間換時間演算法哈。記...
83 刪除排序鍊錶中的重複元素
題目 給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。示例 1 輸入 1 1 2輸出 1 2示例 2 輸入 1 1 2 3 3輸出 1 2 3思路 首先判斷head或者head next為空指標,如果是返回head 不是的話,1.使用兩個listnode指標p和q,p初始化為head,...
83 刪除排序鍊錶中的重複元素
給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。輸入 1 1 2輸出 1 2輸入 1 1 2 3 3輸出 1 2 3設定乙個cur指標指向當前結點,再設定乙個next指標指向當前結點的下乙個結點。設定乙個while迴圈使得next.val的值跟cur.val的值不相等,將cur和nex...