在乙個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 1:
輸入:[2, 3, 1, 0, 2, 5, 3]
輸出:2 或 3
限制: 2 <= n <= 100000
第一種解決方法使用字典依次放入資料,如果set中有重複的就返回沒有就新增
/**
* 第一種使用字典依次放入資料,如果set中有就返回沒有就新增
* 空間: o(n)
* @param nums
* @return
*/public
intfindrepeatnumber
(int nums)
else
}return-1
;}
第二種
不使用集合;需要先排序
* 宣告快慢指標找到相鄰的兩個元素如果相等就返回這個元素
空間:o(1)
具體實現
public
intfindrepeatnumber
(int nums)
quick++
; slow++;}
return-1
;}
劍指offer 查詢陣列中重複的數
題3 找出陣列中重複的數字,例如,輸出長度為7的陣列,找出陣列中重複的數字 解題思路 法一 先給陣列進行排序,從排序好的陣列中找到重複的數字,時間複雜度o nlogn 法二 利用雜湊表,如果雜湊表裡面 沒有此數字,就把他加入雜湊表,如果有,就找到了,提高了時間效率,時間複雜度是o n 但他是以乙個大...
劍指 offer(查詢陣列中重複的數字)
題目描述 在乙個長度為 n 的陣列裡的所有數字都在 0 到 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的,也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。解題思路 要求複雜度為 o n o 1 也就是時間複雜度 o n 空間複雜度 o 1 因此不能使用排序的方法,也...
劍指Offer (陣列)陣列中重複的數字
題目鏈結 題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。解決方法class solution retur...