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 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/xuruhua/article/details/119838990