【LeetCode-35】在已排序的数组中查找给出的目标值(包含目标值不存在的操作)

//My Method
    public static int searchInsert(int[] nums, int target) {
        int index = -1;
        for (int i=0; i<nums.length; i++)
            if (nums[i] == target)
                index = i;
        if (index == -1) {
            //位置可能是最左、最右或者中间
            //1、最左
            if (target < nums[0])
                return 0;
            //2、最右
            if (target > nums[nums.length-1])
                return nums.length;
            //3、中间
            int low = 0;
            int high = nums.length-1;
            while (low<=high) {
                int mid = (low+high)/2;
                if (target > nums[mid])
                    low = mid+1;
                if (target < nums[mid])
                    high = mid-1;
                // 1 4 7 9 11 15 17
            }
            System.out.println(low+"------"+high);
            return low;
        } else {
            return index;
        }
    }
    // Others' Method
    public static int searchInsert_others(int[] A, int target) {
        int low = 0, high = A.length-1;
        while(low<=high){
            int mid = (low+high)/2;
            if(A[mid] == target) return mid;
            else if(A[mid] > target) high = mid-1;
            else low = mid+1;
        }
        return low;
    }

 

posted @ 2020-04-26 14:45  CodeCorner  阅读(219)  评论(0)    收藏  举报