面試題3 陣列中重複的數字

2021-10-16 02:00:36 字數 1177 閱讀 4126

leetcode面試題3

思路1:建立乙個陣列,將原陣列元素當做下標統計次數

int

findrepeatnumber

(int

* nums,

int numssize)

/*count times*/

for(

int i =

0;i < numssize;i++)}

/*no such element*/

return-1

;}

思路2:排序,鄰居比較

leetcode上,這個演算法無法通過,主要時間複雜度太高

只允許o(n)

/*快排*/

void

quicksort

(int

* nums,

int start,

int end)

;int

findrepeatnumber

(int

* nums,

int numssize)

}return-1

;}void

quicksort

(int

* nums,

int start,

int end)

nums[left]

= nums[right]

;while

(pivot >= nums[left]

&& left < right)

nums[right]

= nums[left];}

nums[left]

= pivot;

quicksort

(nums,start,left-1)

;quicksort

(nums,left+

1,end)

;}

思路3:對應更換,書中給定的思路

1.將tem元素歸位nums[tem]

2.已歸位的元素不會被打擾

3.n個元素至多歸位n次

int

findrepeatnumber

(int

* nums,

int numssize)}}

return-1

;}

面試題3 陣列中重複的數字

在乙個長度為n的陣列裡的所有數字都在0 n 1範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。1.方法一 把輸入的資料進行排序,排序後再判斷有無重複的數字,時間複雜...

面試題3 陣列中重複的數字

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

面試題3 陣列中重複的數字

面試題3 找出陣列中重複的數字。在乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 1 輸入 2,3,1,0,2,5,3 輸出 2 或 3 限制 2 n 100...