【手繪漫畫】圖解LeetCode之猜數字大小(LeetCode 374題)

在這裏插入圖片描述

圖解LeetCode刷題計劃

1、寫在前面

手繪漫畫系列正式上線!!!“圖解LeetCode刷題計劃” 來了!!!

今天是第八期,爭取每天一期,最多兩天一期,歡迎大家監督我。。。
在這裏插入圖片描述
最近依舊是二分查找算法呢~

使用新版的模板加上圖解,相信你能更加理解二分法的使用!!!
在這裏插入圖片描述

2、題目

首先看一下題目,
在這裏插入圖片描述
分界條件就是數字的大小!!!調用 API 就可以實現這個功能,簡直是白給。

不過題目寫的有點隱晦。。。有人吐槽這題都TM寫錯了。。。你們是怎麼作對的?笑死我了。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

3、正文

首先分析一下情況,n = 6pick = 2
在這裏插入圖片描述
確定一下 leftright,然後編寫二分查找模板。

可以看到,guess(mid) 時,所以 pickmid 的右側,因爲有等號,所以 left = mid,要注意判斷結果,不能只寫個 left ,因爲是存在 -1 的情況的,價格 if(guess(left)==0) return left; 就好了。

因爲是模板二,所以不要忘記給 mid 加1!!!
在這裏插入圖片描述

4、代碼

/** 
 * Forward declaration of guess API.
 * @param  num   your guess
 * @return 	     -1 if num is lower than the guess number
 *			      1 if num is higher than the guess number
 *               otherwise return 0
 * int guess(int num);
 */

int guessNumber(int n){
	int left=0;
    int right=n;
    while(left<right){
        int mid = (long)left + right + 1 >> 1;
        int res=guess(mid);
        if (res >= 0) {
            // 左邊界更新爲 mid + 1
            left = mid;
        }
        else {
            // 右邊界更新爲 mid - 1
            right = mid - 1;
        }
    }
    if(guess(left)==0) return left;
    return -1;
}

在這裏插入圖片描述
在這裏插入圖片描述

如果有幸幫到你,請幫我點個【贊】,給個【關注】!如果能順帶【評論】給個鼓勵,我將不勝感激。

如果想要更多的資源,歡迎關注 @我是管小亮,文字強迫症MAX~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章