对于这道题,可以使用双指针来解决。

定义两个指针left和right,分别指向数组的开头和结尾。然后比较左右两个指针指向的数字的大小,如果左指针指向的数字小于右指针指向的数字,则将左指针向右移动一位,否则将右指针向左移动一位,直到找到两个相等的数字或者左指针大于右指针为止。

代码如下:

def findNumber(nums):
    left = 0
    right = len(nums) - 1
    while left < right:
        if nums[left] == nums[right]:
            return nums[left]
        elif nums[left] < nums[right]:
            left += 1
        else:
            right -= 1
    return -1

时间复杂度为O(n),空间复杂度为O(1)。

双指针解法:高效查找数组中重复元素

原文地址: https://www.cveoy.top/t/topic/l4OP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录