leetcode-在排序數(shù)組中查找元素的第一個和最后一個位置(二分法)

這道題用到了兩次二分法。第一次二分法確定了所查找元素第一次出現(xiàn)的位置,如果low不等于target則說明數(shù)組中不存在所查找的元素,直接返回結果。如果所查找的元素的值大于所給數(shù)組的最大值,有可能發(fā)生越界,所以要做特殊判斷。如nums = [5],target=7。只有一個元素。mid = 0 因為nums[mid] < target,所以low = mid+1,此時就發(fā)生越界了。所以要判斷,如果 low == nums.size() ,也直接返回res.

第二次二分法是,判斷最后一次出現(xiàn)的位置。因為[0,low)都小于target,而[low,nums.size()] 都大于target,所以 low指向的是第一個大于target的元素。故low-1就是元素結束的位置。

原文鏈接


題目


code
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容