同 LeetCode 2907,此處強調標準模板與邊界自動處理。
int searchInsert(vector& nums, int target) { int left = 0, right = nums.size(); // [left, right) while (left < right) { int mid = left + (right - left) / 2; if (nums[mid] < target) left = mid + 1; else right = mid; } return left; // 自動處理所有邊界 }
| 情況 | 返回值 | 說明 |
|---|---|---|
| target 存在 | 第一個 target 位置 | 等同 lower_bound |
| target 比所有大 | nums.size() | 插入到末尾 |
| target 比所有小 | 0 | 插入到開頭 |
| target 在中間 | 第一個 ≥ target 位置 | 正確插入點 |
return lower_bound(nums.begin(), nums.end(), target) - nums.begin();
背誦並理解 左閉右開、nums[mid] < target 判斷、返回 left 這一標準二分模板,可解決 90% 的查找插入類問題。