LeetCode アルゴリズム C++ ブラシの質問 - 検索挿入

今日の質問

ソートされた配列とターゲット値を指定すると、配列内でターゲット値を検索し、そのインデックスを返します。配列内に対象の値が存在しない場合は、順番に挿入される位置を返します。

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

例 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]、7
出力:4

問題解決のアイデア:

小さい配列から大きい配列までソートされた配列を指定すると、配列内のターゲット要素を挿入する位置を見つける必要があります。
この質問は古典的な二分探索の変形であり、順序付けられた配列内でターゲットより小さい最後の要素を見つけます。

サンプルコード:

class leetcode{
    
    
public:
    int searchInsert(vector<int>& nums, int target) {
    
    
        int left = 0;
        int right = nums.size() - 1;
        while(left <= right)
        {
    
    
            int mid = left + (right - left)/2;
            if(nums[mid] >= target)
            {
    
    
                right = mid - 1;
            }
            else 
            {
    
    
                if(mid == nums.size() - 1 || nums[mid+1] >= target) {
    
    
					return mid + 1
				}
                left = mid + 1;
            }
        }
        return 0;
    }
};

今日の質問は、以前のLeetCode アルゴリズムの C++ ブラシ question-searchFirstLastEqualElementに似ています。すでにできているので簡単です。

おすすめ

転載: blog.csdn.net/u010196944/article/details/127639757