1.確定二分的邊界
2.編寫二分的**框架
3.設計乙個check(性質)
4.判斷一下區間如何更新
5.如果更新方式時l=mid,r=mid+1,那麼在算mid的時候加1
#includeusing namespace std;
int mysqrt(int x)
return l;
}int main()
return r;
}
vectorsearchrange(vector& nums, int target)
; int l = 0,r = nums.size() - 1;
while(l>1;
if(nums[mid] >= target)
r = mid;
else
l = mid+1;
} if(nums[r] != target)
return ;
int start = r; //左邊第乙個找到的數
l=0,r=nums.size()-1;
while(l>1;
if(nums[mid] <= target)
l = mid;
else
r = mid-1;
}int end = r; //右邊的最後乙個數
if(matrix[r/n][r%n] != target) //找到的值和目標值不等返回false
}if(nums[l] == target) //只能是l不能是r,邊界問題
return l;
else
return -1;
}
力扣 二分應用題
1.875.愛吃香蕉的珂珂,傳統二分,左閉右開,返回left right即可。2.222.完全二叉樹的節點個數,利用完全二叉樹結合二分,位運算,注意level 0的特殊情況,返回left 1。需要靈活運用二分查詢。3.69.x 的平方根,上限粗略定為x,注意迴圈條件 l r的賦值 返回結果。4.74...
二分查詢的實現 特性及 力扣實戰題目解析
二分查詢的前提 1.目標函式單調性 單調遞增或遞減 2.存在上下界 bounded 3.能夠通過索引訪問 index accessible 模版 left right 0,len array 1 while left right mid left right 2 if array mid targe...
資料結構與演算法筆記 二分查詢 力扣1011
傳送帶上的包裹必須在 d 天內從乙個港口運送到另乙個港口。傳送帶上的第 i 個包裹的重量為 weights i 每一天,我們都會按給出重量的順序往傳送帶上裝載包裹。我們裝載的重量不會超過船的最大運載重量。返回能在 d 天內將傳送帶上的所有包裹送達的船的最低運載能力。以船容量為標定進行二分查詢,最小船...