劍指offer03:陣列中的重複數字
阿新 • • 發佈:2022-04-19
劍指offer03:陣列中的重複數字
2022/4/18晚22:11開始自己的leetcode刷題之旅,python沖沖衝。
題目:
在一個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意一個重複的數字。
輸入:
[2, 3, 1, 0, 2, 5, 3]
輸出:2 或 3
連結:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof
第一次用python寫資料結構的題目,之前都用的c++,還不太會,直接去看答案,學習思路。
思路分析:
- 利用資料結構特點,容易想到使用雜湊表(Set)記錄陣列的各個數字,當查詢到重複數字則直接返回。
- 如果沒有重複元素,則將新元素新增入set,繼續迴圈。
- 因為題目說的是返回任意一個重複數字,所以找到一個直接return了。
程式碼分析:
- dic = set()
set() 函式建立一個無序不重複元素集,其實就是建立了一個集合,集合中的元素不允許重複。
答案:
class Solution: def findRepeatNumber(self, nums: [int]) -> int: dic = set() for num in nums: if num in dic: return num dic.add(num) return -1