287. 寻找重复数

Posted panweiwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了287. 寻找重复数相关的知识,希望对你有一定的参考价值。

技术图片
技术图片
技术图片

题意:即nums长为n+1,里面的元素值范围:[1,n],有且仅有一个重复值,但该值可以重复多次,所以[1,n]有的数可以不在nums里。

方法一:二分查找。

class Solution(object):
    # 二分查找
    def findDuplicate(self, nums):
        low = 1
        high = len(nums) - 1
        while low < high:
            mid = low + int((high - low) / 2)
            count = 0
            for num in nums:
                if num <= mid:
                    count += 1
            if count > mid:
                high = mid
            else:
                low = mid + 1
        return low

方法二:双指针。

class Solution(object):
    def findDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        nums.sort()
        low, fast = 0, 1
        while fast < len(nums):
            if nums[low] != nums[fast]:
                low += 1
                fast += 1
            else:
                return nums[fast]



以上是关于287. 寻找重复数的主要内容,如果未能解决你的问题,请参考以下文章

[编程题] lc [287寻找数组中重复数

LeetCode#287-寻找重复数

LeetCode:寻找重复数287

287. 寻找重复数

287. 寻找重复数

leetcode 287 Find the Duplicate Number寻找重复数