本文主要是介绍力扣704:二分查找,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给定一个 n
个元素有序的(升序)整型数组 nums
和一个目标值 target
,写一个函数搜索 nums
中的 target
,如果目标值存在返回下标,否则返回 -1
。
示例 1:
输入:nums
= [-1,0,3,5,9,12],target
= 9 输出: 4 解释: 9 出现在nums
中并且下标为 4
示例 2:
输入:nums
= [-1,0,3,5,9,12],target
= 2 输出: -1 解释: 2 不存在nums
中因此返回 -1
思想:定义一个low指向数组的第一个元素,定义一个high指向数组的最后的一个元素,定义一个mid指向数组的中间那个元素。将中间元素与目标元素进行比较,如果相等,则返回其下标mid。如果中间元素小于目标元素,则目标元素在数组右边,将low移动到low+1位置。如果目标元素小于之间元素,则目标元素在数组左边,将high移动到high+1位置。然后对相应的左表或者右表重复上述操作,查找成功返回mid,差找失败,返回-1。
代码:
int search(int* nums, int numsSize, int target) {int low=0;int high=numsSize-1,mid;while(low<=high){mid=(low+high)/2;if(nums[mid]==target){return mid;}else if(nums[mid]<target){low=mid+1;}else{high=mid-1;}}return -1;
}
时间复杂度O(longn),空间复杂度O(1)
这篇关于力扣704:二分查找的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!