找出陣列中重複的數字 演算法

2021-10-01 09:43:20 字數 1447 閱讀 3559

給定乙個長度為 n 的整數陣列nums,陣列中所有的數字都在 0∼n−1 的範圍內。

陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。

請找出陣列中任意乙個重複的數字。

注意:如果某些數字不在 0∼n−1 的範圍內,或陣列中不包含重複數字,則返回 -1;

給定 nums =[2

,3,5

,4,3

,2,6

,7]。返回 2 或 3。

返回其中任意乙個重複的數都可以

首先確定陣列裡的數字是在給定範圍內,否則返回-1

然後將所有元素從首位元素開始,將其放到對應號數的位置上

反覆迴圈,一直將首位元素換作

例如

nums =[2,1,4,3,2]

例如

nums =[2,1,4,0,3]

class

solution

return-1

;}};

int

duplicateinarray

(int

*nums,

int numssize)

for(i=

0;i(nums[i]

!=i)

return nums[i];}

return-1

;}

輸入

[1, 3, 2, 4, 3, 3, 6, 9]

輸出

-1

輸入

[5, 3, 5, 4, 3, 2, 6, 7]

輸出

5

輸入

[1, 4, 2, 0, 3, 5, 6, 7]

輸出

-1

判斷是否存在重複數字,首先得判斷數字範圍是否在題目規定範圍內。其次再把每乙個數的迴圈遍歷,放在對應的坑位,如果放不了,就說明這個坑位有相同的數字占用著,那麼就可以找到重複的數字

找出陣列中重複的數字

面試題3 一 找出陣列中重複的數字 題目 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。static bool get duplicate num1 std vecto...

找出陣列中重複的數字

給定乙個長度為 n 的整數陣列 nums,陣列中所有的數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。注意 如果某些數字不在 0 n 1 的範圍內,或陣列中不包含重複數字,則返回 1 給定 nums 2,3...

找出陣列中重複的數字

在乙個長度為n的陣列中,所有的數字都在0 n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個陣列重複了幾次。請找出陣列中任意乙個重複的數字。例 輸入長度為7的陣列,對應的輸出的重複的數字是2或3。方法1 先排序在查詢 方法2 利用雜湊表 從頭到尾掃瞄每個數字,每掃瞄乙個數...