題目:
給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。
示例:
輸入: 1->1->2輸出: 1->2
輸入: 1->1->2->3->3輸出: 1->2->3
分析:
因為是有序的鍊錶,所以好處理的多,因為如果某個元素含有重複的,當這個元素第一次出現的時候,其後面若干位置一定是和值一樣的元素,那麼我們就可以以此為判斷,直接進行刪除操作,然後繼續遍歷,後面的元素是否和當前的元素值相同,相同的話繼續改變當前元素的next指標的指向,直到碰見值不相同的元素。
**:
publiclistnode deleteduplicates(listnode head)
listnode p =head;
while (p.next != null
)else
}return
head;
}
解法二:遞迴
publiclistnode 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...