題目要求:
給定一個有序(非降序)數組A,可含有重複元素。找到大於target(目標值)的最小元素位置,目標不存在則返回-1
不考慮算法複雜度實現:
nums = list(map(int,input().split()))
target = int(input())
def searchRange(nums,target):
n = len(nums)
for i in range(len(num)):
if nums[i]>target:
return i
else:
return -1
print(searchRange(nums,target))
優化(二分查找)
nums = list(map(int,input().split()))
target = int(input())
def searchRange(nums,target):
n = len(nums)
if n>=1:
v = n//2
if nums[v] == target :
return v
elif target<nums[v]:
return searchRange(nums[:v],target)
elif target>nums[v]:
return searchRange(nums[v+1:],target)
return -1
print(searchRange(nums,target))
二分查找最優時間複雜度O(1),最壞時間複雜度O(N)