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

2021-10-21 02:29:54 字數 946 閱讀 1355

一、遍歷方法

思路:通過遍歷一遍鍊錶在遍歷的過程中刪除節點,因為鍊錶是有序的,所以只需比較當前節點和當前節點的下乙個節點,這裡需要注意一下,如果有重複的使用了head.next = head.next.next刪除下乙個節點了,但是於下乙個新的節點對比還是現在這個節點,所以不要head = head.next移動當前節點。直接continue即可。如果當前節點和下乙個節點不同,那麼就將當前節點向後移動一位。

**如下:

/**

* 遍曆法

* @param head

* @return

*/public

static listnode deleteduplicates2

(listnode head)

head = head.next;

}return flag;

}

二、遞迴

思路:使用遞迴的方法,從後面開始只要遇到重複的就將重複的第乙個節點直接指向到他後面的第二個節點,相當於刪除了後面的乙個重複的節點(可能不太正確)流程大致如下:

**如下:

/**

* 遞迴

* @param head

* @return

* 使用遞迴的方法,從後面開始只要遇到重複的就將重複的第乙個節點直接指向到他後面的第二個節點,相當於刪除了後面的乙個重複的節點

*/public

static listnode deleteduplicates1

(listnode head)

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

今天我們開始另一模組的演算法題,關於鍊錶的操作.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 ...

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

給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。示例 1 輸入 1 1 2 輸出 1 2 示例 2 輸入 1 1 2 3 3 輸出 1 2 3 指定 cur 指標指向頭部 head 當 cur 和 cur.next 的存在為迴圈結束條件,當二者有乙個不存在時說明鍊錶沒有去重複的必要了 ...