leecode:704、二分查找
题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
class Solution {
public int search(int[] nums, int target) {
//定义两指针
int l = 0;
int r = nums.length-1;
//利用循环进行二分
while(l<=r){
int mid = l + ((r-l)>>1); //等价于(l+r)/2
//判断mid中间指针所指向的值和target哪个大
if(nums[mid]>target){
//往左找
r = mid - 1;
}else if(nums[mid]<target){
//往右找
l = mid+1;
}else{
//找到了
return mid;
}
}
return -1;// 表示没找到
}
}
总结:
总体感觉不难,主要是有时候思路比较混乱,得顺着逻辑写,先理清(可适当添加注释)