在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。
這道題是比較基礎,主要思路如下:
首先判斷陣列是否為空,若為空直接返回false;
然後初始化集合及其對應雜湊表,利用雜湊表統計每個元素出現的次數;
之後遍歷整個集合,獲取第乙個出現次數大於1的元素,並將其加入重複陣列,最終返回true,若無則直接返回false;
#include
#include
#include
#include
using
namespace std;
class
solution
map<
int,
int> number_hash;
set<
int> number_set;
for(
int i =
0; i < length ; i++
)int cnt =0;
set<
int>
::iterator it;
for(it = number_set.
begin()
; it != number_set.
end(
); it++)}
return
false;}
};intmain()
bool flag = s.
duplicate
(array,n,duplication);if
(flag)
cout
}
劍指Offer(50) 陣列中重複的數字
在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。1 將陣列連線成字串變數stringbuilder 2 按位遍歷字串...
劍指offer 50 陣列中重複的數字
在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。思路 解法一 雜湊表 時間o n 空間o n class solut...
《劍指 Offer》 50 陣列中重複的數字
陣列 在乙個長度為 n 的陣列裡的所有數字都在 0 到 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如 input output 2要求時間複雜度 o n 空間複雜度 o 1 因此不能使用排序的方法,也不能使用額外...