LeetCode-Find the Duplicate Number

来源:互联网 发布:淘宝详情图片怎么上传 编辑:程序博客网 时间:2024/06/05 05:26

查找数组中重复元素,仅有一个元素重复但可能重复多次。数组长度为n+1,1…n每个数字最多出现一次。

二分法,首先排序,因为整个数组的中位数是知道的,统计整个数组中小于n/2数字个数,若小于则重复数字在右边,反之在左边。

class Solution(object):    def findDuplicate(self, nums):        """        :type nums: List[int]        :rtype: int        """        length=len(nums)-1        l=0        r=length        while l<r :            find=(l+r)/2            lNum=0            for n in nums:                if n <= find:                    lNum+=1            if lNum>find:                r=find            else:                l=find+1        return l
原创粉丝点击