分析题目:考察知识点就是 “二分查找”。
因为给定的数组是升序的,那么先去数组的中间值,nums[mid],
1.如果nums[mid]=target,那么就是找到了了目标值;
2.若nums[mid] >tartget,那么目标值target就是在中间值的左边;
3.若nums[mid] <tartget,那么目标值target就是在中间值的右边;
在2和3的前提之下,每次都缩短了一半的范围,进行查找search。
class Solution {
public int search(int[] nums, int target) {
int left=0,right=nums.length - 1;
int mid;
while(left<=right){
mid = (left+right)/2;
if(nums[mid]==target){
return mid;
} else if(nums[mid] > target){
right = mid - 1;
}else{
left = mid + 1;
}
}
return -1;
}
}
在这里插入图片描述