(1)數是整數
排好序,查重。nlogn,參考(2)
利用雜湊表,時間複雜度n
找出最大值和最小值,如果陣列長度大於二者差,必然有重複。
如果陣列長度小於二者差:
最大值不是太大的情況下,可使用bitmap和位運算,實現雜湊表,然後掃瞄陣列,填寫雜湊表的每乙個bit。
最大值很大的情況下,利用雜湊函式壓縮索引,雜湊表原理查重。
(2)數是浮點數
氣泡排序,排序完畢,掃瞄統計有無重複。每冒出乙個泡,與後面拍好的元素比較一下,相等提前結束排序。時間複雜度n^2,空間複雜度o(1)。
快速排序,邊排序邊判斷,拿基準與左右兩側的最近的若干元素比較,相等就提前結束排序。 時間複雜度nlogn,但是比完整的快速排序時間更快。空間複雜度logn。
如果題目改成去掉重複元素呢?
(1)利用雜湊表,時間複雜度o(n)
(2)排序完畢,先統計最終需要去除多少個重複元素,這樣可讓每個元素一次性前移到最終位置。時間複雜度nlogn
LeetCode 2n個數中重複n次的數
題目描述 在大小為 2n 的陣列 a 中有 n 1 個不同的元素,其中有乙個元素重複了 n 次。返回重複了 n 次的那個元素。示例 示例1 輸入 1,2,3,3 輸出 3 示例2 輸入 2,1,2,5,3,2 輸出 2 示例3 輸入 5,1,5,2,5,3,5,4 輸出 5 解題思路及 1 直接找 ...
找出陣列中是否有重複的數
2010 09 09 23 03 59 分類 c c 標籤 c 字型大小大中小 訂閱 陣列a n 1至n 1這n 1個數存放在a n 中,其中某個數重複一次。寫乙個函式,找出被重複的數字。時間複雜度必須為o n 函式原型 int do dup int a,int n 假金條的數學思想 此演算法題借鑑...
找出陣列中是否有重複的數
題目是這樣的,陣列是無序的,可能沒有重複的數,但最多隻可能有乙個重複的數,要求用最快的方法找到是否有重複的數。乍一想,挺難的,但是其實非常的簡單。解決辦法 陣列a n 1 至n 1 這n 1 個數存放在 a n 中,其中某個數 重複一次 寫乙個函式,找出被重複的數字。時間複雜度必須為o n 函式原型...