LeetCode链接:704. 二分查找 - 力扣(LeetCode)
思路:如题是一个升序排列的整形数组,所以可以想到用二分查找法,由提示可知nums中的所有元素是不重复的,所以不用考虑返回相同元素的问题,nums中每个元素都在-9999-9999之间,所以不用考虑溢出问题。注意left 应该小于等于 right ,因为left=right也有可能会出现mid=target的情况
java代码:
class Solution {
public int search(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
int mid;
while(left <= right){
mid = left + (right - left) / 2;
if(target < nums[mid]){
right = mid - 1;
}else if(target > nums[mid]){
left = mid + 1;
}else{
return mid;
}
}
return -1;
}
}