劍指offer 3 陣列中重複的數字

2021-10-09 15:50:17 字數 820 閱讀 4828

找出陣列中重複的數字。

在乙個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。

示例 1:

輸入:[2, 3, 1, 0, 2, 5, 3]

輸出:2 或 3

限制:

2 <= n <= 100000

本題不僅考查coding能力,還考查應聘者的溝通能力,應與面試官確定是否可以修改原屬組,以及時間和空間的要求。如果可以修改原陣列,則直接利用陣列下標進行元素替換;如果不能修改原陣列,則考慮時間和空間的tradeoff,下面具體講。

先排序,然後遍歷陣列,直到找到重複元素。

暴力演算法的時間複雜度o(nlogn)(陣列排序的時間複雜度)。

遍歷陣列,遇到下標為i的數字m,首先將m與下標i進行比較,若相等,則繼續遍歷下乙個數字;若不相等,則將數字m與num[m](即下標為m的數字)進行比較,若m==num[m],則說明發現重複數字;若不相等,則將數字m與num[m]進行交換,講數字m放到屬於它的位置上。

class solution 

if(count>(mid-start+1))

end = mid;

else

start = mid+1;

}return -1;

}public int countrange(int nums, int start, int end)

return count;

}}

劍指offer (3)陣列中重複的數字

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

劍指offer 3 陣列中重複的數字

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。使用hashset去重 如果新增不成功說明出現了重複的元素 返回。public intfindrepeatnu...

劍指offer 3 陣列中重複的數字

變試 不修改陣列找重複陣列 在乙個長度為n的陣列裡的所有數字都在0 n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字 n 7 輸出 2或3 陣列中的數字在0 n 1的範圍內 如果沒有重複的數字,當陣列排序後數字 i 應該出現...