当前位置: 首页 > 后端技术 > Python

BIGOTestOpen

时间:2023-03-26 11:07:20 Python

题目要求:给定一个有序(非降序)数组A,可能包含重复的元素。找到大于target(目标值)的最小元素位置,如果target不存在,不管算法复杂度,返回-1实现:nums=list(map(int,input().split()))target=int(input())defsearchRange(nums,target):n=len(nums)foriinrange(len(num)):ifnums[i]>target:returnielse:return-1print(searchRange(nums,target))优化(二进制搜索)nums=list(map(int,input().split()))target=int(input())defsearchRange(nums,target):n=len(nums)ifn>=1:v=n//2ifnums[v]==target:returnveliftargetnums[v]:returnsearchRange(nums[v]+1:],target)return-1print(searchRange(nums,target))二分查找最优时间复杂度O(1),最差时间复杂度O(N)