287. 尋找重複數

給定一個包含 n + 1 個整數的數組 nums,其數字都在 1 到 n 之間(包括 1 和 n),可知至少存在一個重複的整數。假設只有一個重複的整數,找出這個重複的數。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/find-the-duplicate-number
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

題目如上:

我的思路十分簡單,1.排序如果相鄰兩個數字相同就返回他,因爲只有一個重複數字2.可以利用字典計數,然後遍歷字典,找到個數大於1的那個值,返回它的

方法一

class Solution:
    def findDuplicate(self, nums: List[int]) -> int:
        # 先排序
        nums.sort()
        # 後遍歷,比較相鄰值
        for i in range(len(nums)):
            if nums[i]==nums[i+1]:
                return nums[i]

方法二

class Solution:
    def findDuplicate(self, nums: List[int]) -> int:
        p={}
        for i in nums:
            p[i]=p.get(i,0)+1
        for k,v in p.items():
            if v>1:
                return k

官方題解更巧妙利用的是二分法,但是不容易想到,同時這兩個方法的效率還是可以的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章