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

2022-06-16 11:36:06 字數 868 閱讀 7512

題目:

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

示例:

輸入: 1->1->2輸出: 1->2

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

分析:

因為是有序的鍊錶,所以好處理的多,因為如果某個元素含有重複的,當這個元素第一次出現的時候,其後面若干位置一定是和值一樣的元素,那麼我們就可以以此為判斷,直接進行刪除操作,然後繼續遍歷,後面的元素是否和當前的元素值相同,相同的話繼續改變當前元素的next指標的指向,直到碰見值不相同的元素。

**:

public

listnode deleteduplicates(listnode head)

listnode p =head;

while (p.next != null

)else

}return

head;

}

解法二:遞迴

public

listnode deleteduplicates(listnode head) {

if (head == null || head.next == null) return

head;

head.next =deleteduplicates(head.next);

return head.val == head.next.val ?head.next : head;

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

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

給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。輸入 1 1 2輸出 1 2輸入 1 1 2 3 3輸出 1 2 3設定乙個cur指標指向當前結點,再設定乙個next指標指向當前結點的下乙個結點。設定乙個while迴圈使得next.val的值跟cur.val的值不相等,將cur和nex...