BIGO 測開

題目要求:
給定一個有序(非降序)數組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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章