双指针解法:高效查找数组中重复元素
对于这道题,可以使用双指针来解决。
定义两个指针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 著作权归作者所有。请勿转载和采集!