题解 | #KiKi学结构体和指针#
二分查找-I
http://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b
二分法查找某数
首先判断长度是否为0,为0直接返回-1; 创建一个左边界L,右边界R,用于确定哪半部分的数据保留; 如果长度为1直接判断是不是跟目标值相等,是就直接返回下标,不是返回-1; 创建一个变量值为中点,如果中点的值大于target,保留左半部分,R变为index-1,将index再取为[R,L]的中点;如果中点的值小于target,保留右半部分,L变为index+1,将index再取为[R,L]的中点;如果遇到nums[index]==target,则直接返回index;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @param target int整型
* @return int整型
*/
public int search (int[] nums, int target) {
// write code here
if(nums.length == 0){
return -1;
}
int L = 0, R = nums.length -1;
while(L <= R){
int index = L + ((R-L)>>1);
if(nums[index] == target){
return index;
}else if(nums[index] > target){
R = index -1;
index = L + ((R-L)>>1);
} else if(nums[index] < target){
L = index + 1;
}
}
return nums[L] == target ? L : -1;
}
}
360集团公司福利 428人发布

