二分查詢的左閉右開和左閉右閉寫法中各種小細節深究

2021-10-19 23:04:40 字數 1548 閱讀 1312

lower_bound查詢的是公升序序列中的第乙個出現target的pos,區間應從右向左收縮。

upper_bound查詢的是公升序序列中的最後乙個出現target的pos,區間應從左向右收縮。

主迴圈判斷本質目的是為了確保整個區間能夠被檢索到。

int lower_bound(vector& nums, int target)else if (nums[mid] < target)else if (nums[mid] > target)

}// 邊界

if (left >= nums.size() || nums[left] != target) return -1;

return left;

}

c++

copy

注意

int upper_bound(vector& nums, int target) else if (nums[mid] > target)  else if (nums[mid] == target) 

}// 最後要檢查 越界的情況

if (left <= 0 || nums[left-1] != target)

return -1;

return left-1;

}

c++

copy

int left_bound(int nums, int target)  else if (nums[mid] > target)  else if (nums[mid] == target) 

}// 最後要檢查 left 越界的情況

if (left >= nums.length || nums[left] != target)

return -1;

return left;

}

c++

copy

// 檢查出界情況

if (left >= nums.length || nums[left] != target)

return -1;

return left;

c++

copy

int right_bound(int nums, int target)  else if (nums[mid] > target)  else if (nums[mid] == target) 

}// 最後要檢查 right 越界的情況

if (right < 0 || nums[right] != target)

return -1;

return right;

}

c++

copy

ps:以上是二分查詢的左閉右開和左閉右閉寫法中各種小細節深究全部內容,希望文章能夠幫你解決二分查詢的左閉右開和左閉右閉寫法中各種小細節深究所遇到的遊戲開發問題。

本文收錄在 遊戲程式設計 ?️ - 學習演算法專題,分享走一走~

mysql區間左開右閉 左開右閉區間怎麼寫

1.區間及寫法 有限區間 1 開區間 例如 a,b 3 半開半閉區間 例如 a,a 無限區間在數學幾何上的意義表現為 一條直線。注 這裡假設a 2.火車票學生優惠區間怎麼填 優惠區間需要填寫 學生在學校學習期間,家庭居住地 父親或母親之中任何一方居住地 和學校所在地不在同一城市,父母居住地到學校之間...

二分法查詢 左閉右開,劃分區間

清華鄧公里面有這個二分查詢思路 區間 lo,hi 表示待定區域,0,lo 表示絕對小於value的區域,mi,hi 表示大於等於value的區域 最後得到的lo 的語意剛好滿足,只不過本題給出的答案要加一,表示的不是秩,而是位置。二分查詢 param n int整型 陣列長度 param v int...

L14 Python為什麼要用左閉右開

表示 1,2,3,9 這樣乙個序列,有四種方法 方法一和方法二,他們邊界之間的差正好等於序列的長度。方法一和方法二,在這兩種表示方法中,如果我們觀察兩個相鄰的序列,那麼其中乙個序列的上限正好等於另乙個的下限。自然數是有最小值的 0 如果像第二種和第四種那樣,在下界採用 那麼當我們想表示乙個從0開始的...