class Solution {
public int search(int[] nums, int target) {
// 方法一:这种方式不是最优解,可以采用二分查找法
// // 升序数组,从前往后比较即可
// // 拿到target所在位置的数后,返回这个数位置的序位号
// int length = nums.length - 1;
// for(int i = 0;i <= length;i++){
// if(nums[i] == target){
// return i;
// }
// }
// return -1;
// 方法二:二分查找
int left = 0;
int right = nums.length;
while(left <= right){
int mid = (left + right)/2;
if(nums[mid] < target){
left = mid + 1;
}else if(nums[mid] > target){
right = mid - 1;
}else{
return mid;
}
}
return -1;
}
}
遇到报错:java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 6 at line 20, Solution.search at line 54, __DriverSolution__.__helper__ at line 87, __Driver__.main
这是数组越界的问题 len的值有问题,造成了数组越界
int left = 0;
int right = nums.length - 1;
while(left <= right){
int mid = (left + right)/2;
if(nums[mid] < target){
left = mid + 1;
}else if(nums[mid] > target){
right = mid - 1;
}else{
return mid;
}
}
return -1;
版权声明:本文为xuruhua原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。