演算法 中等鍊錶兩則 82刪除重複 86分隔

2021-10-24 21:15:41 字數 1189 閱讀 8161

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

給定乙個排序鍊錶,刪除所有含有重複數字的節點,只保留原始鍊錶中 沒有重複出現 的數字。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

if(head-

>val == head-

>next-

>val)

return

deldup

(head-

>next,1)

;else}}

listnode*

deleteduplicates

(listnode* head)

};

想寫三指標未遂。。經智哥提示可以遞迴,寫出了這種奇葩遞迴法

其實三指標迭代也應該練練

分隔鍊錶

給定乙個鍊錶和乙個特定值 x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。

你應當保留兩個分割槽中每個節點的初始相對位置。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

else

head = head-

>next;

} r-

>next =

null

;//為什麼不加這句會引起heap use after free

//應該是得到乙個有環的錯誤鍊錶

l->next = prehigh-

>next;

return prelow-

>next;}}

;

乍一看比較唬人,其實一次遍歷的方法還是比較好寫的。

注意啞節點的使用,比較方便

就是維護兩個鍊錶,乙個是左半邊,乙個是右半邊

有個小問題就是為什麼不加r結尾為null這一句會引起heap use after free

本以為會得到乙個錯誤的鍊錶

想了一天,覺得可能是生成的煉表裡有環。伺服器校驗結果的時候可能會遍歷鍊錶

這樣就死迴圈了,就會報錯。

刪除鍊錶中的重複元素(中等難度)(第82題)

題目 給定乙個排序鍊錶,刪除所有含有重複數字的節點,只保留原始鍊錶中 沒有重複出現 的數字。示例 1 輸入 1 2 3 3 4 4 5 輸出 1 2 5 示例 2 輸入 1 1 1 2 3 輸出 2 3 分析 因為最近一直在刷鍊錶型別的題目,所以拿到這個題目的時候我首先想到了用雙指標來做,即,快慢指...

82 刪除排序鍊錶中重複元素

題目 給定乙個排序鍊錶,刪除所有含有重複數字的節點,只保留原始鍊錶中 沒有重複出現 的數字。示例 1 輸入 1 2 3 3 4 4 5 輸出 1 2 5示例 2 輸入 1 1 1 2 3 輸出 2 3思路 採用三個指標。slow指標指向第乙個重複節點,fast指向最後乙個重複節點,temp指向第乙個...

鍊錶演算法 刪除重複節點

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 public class listnode public listnode deleteduplication listnode phead l...