圖解LeetCode刷題計劃
1、寫在前面
手繪漫畫系列正式上線!!!“圖解LeetCode刷題計劃” 來了!!!
今天是第七期,爭取每天一期,最多兩天一期,歡迎大家監督我。。。
最近依舊是二分查找算法呢~
使用新版的模板加上圖解,相信你能更加理解二分法的使用!!!
2、題目
首先看一下題目,
分界條件就是我們的 mid * mid
和 x
的關係!!!
3、正文
首先分析一下情況,
確定一下 left
和 right
,然後編寫二分查找模板。
可以看到,mid * mid <= x
時,所以 target
在 mid
的右側,因爲有等號,所以 left = mid
,mid * mid <= x
這麼寫不好,容易溢出,所以可以寫成 mid<=x/mid
。
因爲是模板二,所以不要忘記給 mid
加1!!!
4、代碼
int mySqrt(int x){
int left=0;
int right=x;
while(left<right){
int mid=(long)left+right+1>>1;
if(mid<=x/mid){
left=mid;
}
else{
right=mid-1;
}
}
return left;
}
如果有幸幫到你,請幫我點個【贊】,給個【關注】!如果能順帶【評論】給個鼓勵,我將不勝感激。
如果想要更多的資源,歡迎關注 @我是管小亮,文字強迫症MAX~