圖解LeetCode刷題計劃
1、寫在前面
手繪漫畫系列正式上線!!!“圖解LeetCode刷題計劃” 來了!!!
今天是第九期,爭取每天一期,最多兩天一期,歡迎大家監督我。。。
最近依舊是二分查找算法呢~
使用新版的模板加上圖解,相信你能更加理解二分法的使用!!!
2、題目
首先看一下題目,
分界條件就是出現錯誤!!!調用 API 就可以實現這個功能,簡直是白給。
3、正文
首先分析一下情況,isBadVersion(mid)==true
那麼說明 mid
出現錯誤,但是它不一定是第一個,不過目標一定在左側。
確定一下 left
和 right
,然後編寫二分查找模板。
可以看到,因爲有等號,所以 mid
有可能是第一個錯誤的地方,所以 right=mid
,而另一半情況,因爲不帶等號,所以 left=mid+1
。
4、代碼
// The API isBadVersion is defined for you.
// bool isBadVersion(int version);
int firstBadVersion(int n) {
int left = 0, right = n;
while(left < right){
int mid = left + (right - left) / 2;
if(isBadVersion(mid)) { right = mid; }
else { left = mid + 1; }
}
return left;
}
如果有幸幫到你,請幫我點個【贊】,給個【關注】!如果能順帶【評論】給個鼓勵,我將不勝感激。
如果想要更多的資源,歡迎關注 @我是管小亮,文字強迫症MAX~