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

2021-09-29 23:27:12 字數 802 閱讀 7377

分析:思路比較簡單,如果元素相等則指向下乙個。但是要考慮清楚測試用例的覆蓋完備性,最開始筆者就沒考慮到兩個以上重複的元素出現,只考慮了乙個重複的導致錯誤。新增continue語句那裡解決了這個問題。

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

else

}return res;

}}

重寫一遍解法一,貌似有所進步.

class

solution

else

}return result;

}}

解法二:遞迴

寫遞迴的思路應該與分治策略緊密連線起來,分治的三步:分解,解決,合併子問題解。那麼在程式裡就可以按照這三步來寫。如下程式第一句if語句是遞迴的終止條件,第二句則可以看作把鍊錶的每個點都拆開重新指向下乙個節點。第二三句起到合併解的作用,將鍊錶連起來。由於是遞迴,所以求解過程的方向應該是從鍊錶尾往煉表頭把節點重新連線的。和上面的迭代方向相反。當兩個點值相同,這裡刪除的點,是前乙個點.

public listnode deleteduplicates

(listnode head)

重寫一遍解法二:這裡刪除的點是後面乙個點…

class

solution

else

}}

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

一 遍歷方法 思路 通過遍歷一遍鍊錶在遍歷的過程中刪除節點,因為鍊錶是有序的,所以只需比較當前節點和當前節點的下乙個節點,這裡需要注意一下,如果有重複的使用了head.next head.next.next刪除下乙個節點了,但是於下乙個新的節點對比還是現在這個節點,所以不要head head.nex...

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

今天我們開始另一模組的演算法題,關於鍊錶的操作.let s do it 題目 給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次.示例1 輸入 1 1 2 輸出 1 2 示例2 輸入 1 1 2 3 3 輸出 1 2 3 思想 public class listnode func dele...

刪除排序鍊錶中重複元素

示例 1 輸入 1 2 3 3 4 4 5 輸出 1 2 5 示例 2 輸入 1 1 1 2 3 輸出 2 3 照例使用三個指標來 struct listnode deleteduplicates struct listnode head else 沒有重複的就正常移動 示例 1 輸入 1 1 2 ...