码迷,mamicode.com
首页 > 其他好文 > 详细

287. 寻找重复数

时间:2020-06-08 14:17:49      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:sort   dup   pre   重复   duplicate   重复数   查找   code   元素   

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

题意:即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. 寻找重复数

标签:sort   dup   pre   重复   duplicate   重复数   查找   code   元素   

原文地址:https://www.cnblogs.com/panweiwei/p/13065222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!