【一天一道Leetcode】刪除排序鏈表的重復元素

本篇推文共計2000個字,閱讀時間約3分鐘。
01
題目描述

題目描述:
存在一個按升序排列的鏈表,給你這個鏈表的頭節(jié)點 head ,請你刪除所有重復的元素,使每個元素只出現(xiàn)一次。返回同樣按升序排列的結果鏈表。

示例1:
輸入:head = [1,2,2,3,4]
輸出:[1,2,3,4]提示:
1.鏈表中節(jié)點數(shù)目在范圍[0, 300]內;
2.-100<= Node.val<= 100;
3.題目數(shù)據(jù)保證鏈表已經(jīng)按升序排列。
02
思路和方法
由題可知重復的元素在鏈表出現(xiàn)的位置是連續(xù)的,
因此我們只需進行一次遍歷,就能刪除重復元素。
由于輸入是鏈表,我們可以用一個指針fir指向鏈表的頭節(jié)點,隨后開始對鏈表進行遍歷。
如果當前指針fir指向元素與fir.next指向元素相同,則可以利用:
fir.next=fie.next.next將該節(jié)點元素刪掉。
以此類推,用這種方法遍歷完鏈表后,返回鏈表頭節(jié)點輸出即可。

我們用代碼表示為:
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
if not head:
return head
fir = head
while fir.next:
if fir.val == fir.next.val:
fir.next = fir.next.next
else:
fir = fir.next
return head
【年終總結】你好2021,再見2020。

【秋招紀實錄】一篇特別正經(jīng)的【騰訊】求職經(jīng)驗分享

【一天一道Leetcode】逆波蘭表達式
你與世界
只差一個
公眾號
評論
圖片
表情

