劍指offer 查詢陣列中重複的數字

2022-09-05 07:03:13 字數 756 閱讀 2926

在乙個長度為 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...