📅  最后修改于: 2023-12-03 14:54:42.503000             🧑  作者: Mango
假设我们有一个已经排序的数组,现在我们需要找到该数组中最后一个出现的重复元素。
我们可以用二分查找的方式,对数组进行查找。具体步骤如下:
def find_last_duplicate(nums):
left, right = 0, len(nums) - 1
while left < right:
mid = (left + right) // 2
if nums[mid] == nums[mid + 1]:
left = mid + 1
elif nums[mid] == nums[mid - 1]:
right = mid - 1
else:
return mid
return left
该算法的时间复杂度为 O(logn),其中 n 是数组的长度。空间复杂度为 O(1),只需要常数空间来存储指针。