常見的二分查詢 和找左右邊界

2021-10-08 05:07:15 字數 1107 閱讀 2652

參考題解:二分查詢演算法細節詳解

記錄一下:

左右全閉的寫法:

int

binary_search

(int

nums,

int target)

else

if(nums[mid]

> target)

else

if(nums[mid]

== target)

}// 直接返回

return-1

;}intleft_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;

}int

right_bound

(int

nums,

int target)

else

if(nums[mid]

> target)

else

if(nums[mid]

== target)

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

左右邊界二分查詢

二分查詢雖然是個基礎演算法,但是要考慮的還是蠻多的 二分的前提是避免死迴圈,所以邊界迭代的時候不能出現重複的值,由於整數型別的除法是向下取整,所以當left right 1的是時候就會造成mid left如果邊界迭代是left mid的話 就會陷入死迴圈,所以邊界迭代最好寫成下面的形式,再根據不同的...

二分法尋找左右邊界

尋找左邊界 陣列有序,且有重複 左閉右開 迴圈條件 left right 中間位置計算 mid left right left 1 左邊界更新 left mid 1 右邊界更新 right mid 返回值 nums left target left 1public static void main ...

劍指 二分查詢最左邊界和最右邊界

直接上 吧,為了鞏固記憶,方便下次檢視 我是在練習劍指37中遇到的這題,思想是 找到k在陣列中的上下邊界,順便可以算出k的出現次數 class solution def getnumberofk self,data,k write code here hashmap 1 二分法?找到最左邊的k.找到...