今日の質問
ソートされた配列とターゲット値を指定すると、配列内でターゲット値を検索し、そのインデックスを返します。配列内に対象の値が存在しない場合は、順番に挿入される位置を返します。
配列内に重複する要素はないと仮定できます。
例 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に似ています。すでにできているので簡単です。