力扣 704. 二分查找
创始人
2024-03-06 17:23:50
0

1.题目:

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1

2.示例:

输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4
输入: nums = [-1,0,3,5,9,12], target = 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1

3.自己实现:

class Solution {public int search(int[] nums, int target) {int y =0;for(int i =0;i

4.优质写法:

总体模板就是先找到中间的数,与目标相比,如果不符合,直接可以砍去一半,在剩下的一半数组里面找

目标数,同理,如果没找到继续砍去剩余一半的一半.这才符合二分寻找

class Solution {public int search(int[] nums, int target) {//nums.length -1 获取下标int left =0; int right = nums.length -1;while(left<=right){//这里不可以简化为left+right,是因为left和right相加可能会超过int最大值,溢出int mid = left+(right - left)/2;if(nums[mid]==target){return mid;//如果中间的数大于目标,那说明target在mid的左侧,那么需要把右侧去掉,也就是right缩小,已经判断过target小于mid 所以right = mid -1 }else if(nums[mid]>target){right = mid -1;//如果中间数小于target,那么说明target在mid的右侧,数组越靠右越大,所以要把mid左侧删掉left = mid 但是已经判断过mid小于target 所以 left = mid + 1;}else{left = mid +1;}}return -1;}
}

相关内容

热门资讯

中证A500ETF摩根(560... 8月22日,截止午间收盘,中证A500ETF摩根(560530)涨1.19%,报1.106元,成交额...
A500ETF易方达(1593... 8月22日,截止午间收盘,A500ETF易方达(159361)涨1.28%,报1.104元,成交额1...
何小鹏斥资约2.5亿港元增持小... 每经记者|孙磊    每经编辑|裴健如 8月21日晚间,小鹏汽车发布公告称,公司联...
中证500ETF基金(1593... 8月22日,截止午间收盘,中证500ETF基金(159337)涨0.94%,报1.509元,成交额2...
中证A500ETF华安(159... 8月22日,截止午间收盘,中证A500ETF华安(159359)涨1.15%,报1.139元,成交额...
科创AIETF(588790)... 8月22日,截止午间收盘,科创AIETF(588790)涨4.83%,报0.760元,成交额6.98...
创业板50ETF嘉实(1593... 8月22日,截止午间收盘,创业板50ETF嘉实(159373)涨2.61%,报1.296元,成交额1...
港股异动丨航空股大幅走低 中国... 港股航空股大幅下跌,其中,中国国航跌近7%表现最弱,中国东方航空跌近5%,中国南方航空跌超3%,美兰...
电网设备ETF(159326)... 8月22日,截止午间收盘,电网设备ETF(159326)跌0.25%,报1.198元,成交额409....
红利ETF国企(530880)... 8月22日,截止午间收盘,红利ETF国企(530880)跌0.67%,报1.034元,成交额29.0...