class Solution:
# @param {integer[]} nums
# @param {integer} target
# @return {boolean}
def search(self, nums, target):
"considering the situation: nums[low]=nums[mid]=nums[upp] in which we would traverse the list, O(n)"
if not nums:
return False
l,u=0,len(nums)-1
while l<=u:
mid=(l+u)>>1 #for python, right shift means *2**(-n), and left shift refers to the operation *2**n
if target==nums[mid]:
return True
elif nums[l]==nums[mid]==nums[u]:
l,u=l+1,u-1
elif nums[l]<nums[mid] and nums[l]<=target<nums[mid] or nums[l]>nums[mid] and not(nums[mid]<target<=nums[u]):
u=mid-1
else: l=mid+1
return False
# @param {integer[]} nums
# @param {integer} target
# @return {boolean}
def search(self, nums, target):
"considering the situation: nums[low]=nums[mid]=nums[upp] in which we would traverse the list, O(n)"
if not nums:
return False
l,u=0,len(nums)-1
while l<=u:
mid=(l+u)>>1 #for python, right shift means *2**(-n), and left shift refers to the operation *2**n
if target==nums[mid]:
return True
elif nums[l]==nums[mid]==nums[u]:
l,u=l+1,u-1
elif nums[l]<nums[mid] and nums[l]<=target<nums[mid] or nums[l]>nums[mid] and not(nums[mid]<target<=nums[u]):
u=mid-1
else: l=mid+1
return False
本文探讨了一种改进的搜索算法,针对列表中重复元素可能导致的效率下降问题进行了优化。通过实例分析了如何在复杂情况下高效定位目标值,特别关注了列表中元素重复时的搜索策略。
1026

被折叠的 条评论
为什么被折叠?



