找出陣列中重複的數字。
在乙個長度為 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 應該出現...