83 刪除鍊錶中重複的元素

2022-09-17 02:33:09 字數 729 閱讀 2707

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

示例 1:

輸入: 1->1->2

輸出: 1->2

示例 2:

輸入: 1->1->2->3->3

輸出: 1->2->3

有兩種解法,一種是迭代,使用雙指標,另一種是遞迴。

雙指標就是定義快慢指標,快指標與慢指標指向的值進行比較,如果兩個的val相等代表兩個元素重複,將慢指標的next指向快指標的next,如果不相等,兩個指標都往後移動,直到快指標為空。

遞迴解法:結束條件時head為null或者head.next為null,遞迴的返回值代表以head開頭的鍊錶是乙個有序不重複的鍊錶,所以,如果兩個元素重複,最終返回head,如果不重複,繼續遞迴下乙個節點;

//快慢指標解法

public listnode deleteduplicates

(listnode head)

else

}return pre.next;

}

遞迴

//遞迴解法

public listnode deleteduplicates

(listnode head)

else

return head;

}

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

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

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,...