首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

LeetCode Search Insert Position:標準 lower_bound 二分模板

     編輯:關於C++

題目回顧

同 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 位置正確插入點

C++ STL 一行解決

return lower_bound(nums.begin(), nums.end(), target) - nums.begin();

總結

背誦並理解 左閉右開、nums[mid] < target 判斷、返回 left 這一標準二分模板,可解決 90% 的查找插入類問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved