83 刪除排序鍊錶中的重複元素

2021-10-22 10:45:07 字數 1711 閱讀 3110

給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。

示例 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...