LeetCode-35。検索挿入位置-二分法

35.挿入場所の検索

タイトル説明

並べ替えられた配列とターゲット値を指定して、配列内のターゲット値を見つけ、そのインデックスを返します。ターゲット値が配列に存在しない場合は、挿入される位置を順番に返します。

配列に重複する要素はないと想定できます。

例1:

入力:[1,3,5,6]、5
出力:2
例2:

入力:[1,3,5,6]、2
出力:1
例3:

入力:[1,3,5,6]、7
出力:4
例4:

入力:[1,3,5,6]、0
出力:0

問題解決のアイデア

class Solution_35 {
    
    
    public int searchInsert(int[] nums, int target) {
    
    
        if (target <= nums[0])
            return 0;

        if (target > nums[nums.length - 1])
            return nums.length;

        int left = 0;
        int right = nums.length - 1; //定义target在左闭右闭的区间里,[left, right]

        while (left <= right){
    
    
            int mid = (right - left) / 2 + left; // 防止溢出 等同于(left + right)/2
            if (nums[mid] > target){
    
    
                right = mid - 1;
            }else if (nums[mid] < target){
    
    
                left = mid + 1;
            }else {
    
    
                return mid;
            }
        }
        return right + 1;
    }
}

おすすめ

転載: blog.csdn.net/qq_35655602/article/details/115103723