詳細描述:
在乙個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。
示例 1:
輸入: [2, 3, 1, 0, 2, 5, 3]限制:輸出:2 或 3
2 <= n <= 100000
考查:陣列、雜湊表
解法(一):使用set集合的鍵唯一性
class
solution
}return nums[flag];}
}
解析:理解題目的要求其實就是建立乙個set集合,因為set集合要求的key唯一性,只要新增不成功,即說明set集合裡面已有重複元素
執行用時:5 ms
記憶體消耗:49.9 mb
解法(二):原地置換法
public
static
intfindrepeatnumbynon
(int
arr)
}return integer.max_value;
}
解析:巧妙利用陣列下標來匹配對應的元素,從前往後遍歷陣列,每個元素都要求下標與元素的值一一對應,如果在調換位置的過程中發現該位置的元素與別的位置的元素是相同的,那麼就說明該數字重複,直接返回該數字。
執行用時:5 ms
記憶體消耗:49.9 mb
劍指offer 陣列中重複的數
題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。開始我考慮的是,先將陣列排序,然後逐個比較,如果有相等的,...
劍指offer之陣列中重複的數
在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。public class solution a numbers i ...
劍指offer 查詢陣列中重複的數
題3 找出陣列中重複的數字,例如,輸出長度為7的陣列,找出陣列中重複的數字 解題思路 法一 先給陣列進行排序,從排序好的陣列中找到重複的數字,時間複雜度o nlogn 法二 利用雜湊表,如果雜湊表裡面 沒有此數字,就把他加入雜湊表,如果有,就找到了,提高了時間效率,時間複雜度是o n 但他是以乙個大...