
前言
哈喽,大家好,我是一條。
糊塗算法,難得糊塗
今天做一道劍指offer的題。
Question
劍指 Offer 03. 數組中重複的數字
難度:簡單
找出數組中重複的數字。
在一個長度為 n 的數組 nums 裡的所有數字都在 0~n-1 的範圍内。數組中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出數組中任意一個重複的數字。
示例 1:
輸入:
[2, 3, 1, 0, 2, 5, 3]
輸出:2 或 3
限制:
2 <= n <= 100000
Solution
做了這麼多題,這題應該算是比較簡單了
但是又不簡單,就像評論說的,我們面試的時候,一定要問好時間和空間的要求
建立一個hashset
依次加入數組元素,加入失敗,就将該數字傳回,并終止循環。
Code
所有leetcode代碼已同步至github
歡迎star
/**
* @author yitiaoIT
*/
class Solution {
public int findRepeatNumber(int[] nums) {
Set<Integer> set = new HashSet<>();
for(int n : nums) {
if(!set.add(n)){
return n;
}
}
return -1;
}
}
Result
複雜度分析
- 時間複雜度:O(N)
🌈尋寶
⭐今天是堅持刷題更文的第24/100天
⭐各位的點贊、關注、收藏4、評論、訂閱就是一條創作的最大動力
⭐更多算法題歡迎關注專欄《leetcode》
為了回饋各位粉絲,禮尚往來,給大家準備了一條多年積累下來的優質資源,包括 學習視訊、面試資料、珍藏電子書等
怎麼領取請大家自己找,尋寶遊戲現在開始。
找不到可以評論留言,一條就會注意到你。
如果還不行,請私信我。