這道題用到了兩次二分法。第一次二分法確定了所查找元素第一次出現(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