劍指offer 陣列中重複的數字

2021-10-06 09:59:06 字數 728 閱讀 3613

題目:在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。

本題採用雜湊大發來解決,通過雜湊表來統計每個數字出現的次數,然後遍歷雜湊表找到值大於1的主鍵。

注:1.要注意題目中所說的所有數字在0到n-1之間,輸入要有效,要根據這個條件判別輸入資料是否合法。

2.遍歷雜湊表的辦法:

a.用陣列中的每個元素來遍歷雜湊表

for

(int i=

0;i++i)

if(temp[i]

>1)

b.用迭代器來對雜湊表中每個元素進行遍歷

for

(;p!=temp.

end();

++p)

}

完整**如下:

bool

duplicate

(int numbers,

int length,

int* duplication)

for(

int i=

0;i++i)

if(temp[i]

>1)

return

false;}

}

劍指offer 陣列中重複的數字

題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。class solution 考慮這種非法輸入 for i...

劍指offer 陣列中重複的數字

在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。分析 雖然也ac了,但是沒仔細看題,可以利用題目已有條件做到更簡單的...

劍指offer 陣列中重複的數字

題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。解析 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍...