🌕 35. 搜索插入位置

吞佛童子2022年6月9日
  • algorithm
  • array
小于 1 分钟

🌕 35. 搜索插入位置

难度: 🌕

问题描述

img_5.png


解法

class Solution {
    public int searchInsert(int[] nums, int target) {
        // 思路:
        // 无重复元素升序
        // 有则返回下标,无则返回下标,该下标处 num > target 但是最接近 target
        int len = nums.length;
        // 特殊情况特判
        if(target <= nums[0]) {
            return 0;
        } 
        if(target > nums[len - 1]) {
            return len;
        }
        return mySol(nums, target, 0, len - 1);
    }

    private int mySol(int[] nums, int target, int left, int right) {
        // 递归终止条件
        if(left >= right) {
            return left;
        }
        // left < right
        int mid = left + ((right - left) >> 1);
        if(target == nums[mid]) {
            return mid;
        } else if(target < nums[mid]) {
            right = mid;
            return mySol(nums, target, left, right);
        } else {
            // target > nums[mid]
            left = mid + 1;
            return mySol(nums, target, left, right);
        }
    }
}

输出

img_4.png

上次编辑于: 2022/6/20 下午8:24:47
贡献者: liuxianzhishou