【力扣(LeetCode)】【C/C++】【374.猜数字大小】

学习时间:

        2023年1月22日


题目描述:


 题解分享:

// 作     者 : 繁 华 倾 夏
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

// 力扣(LeetCode):374. 猜数字大小

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

// -1 我选出的数字比你猜的数字小 pick < num
// 1  我选出的数字比你猜的数字大 pick > num
// 0  我选出的数字和你猜的数字一样。恭喜!你猜对了!pick == num

int pick = 6;

int guess(int num) {
    if (num == pick) {
        return 0;
    }
    else if (num > pick) {
        return -1;
    }
    else {
        return 1;
    }

}


// 二分查找原理
int guessNumber(int n) {
    long long low = 1, high = n, mid;
    while (low < high) {        // 循环直至区间左右端点相同
        mid = (low + high) / 2; 
        if (guess(mid) <= 0)
            high = mid; // 答案在区间low,mid中
        else
            low = mid + 1;  // 答案在mid+1,high中
    }
    return low; // 此时low==high,区间即为一个点,即为答案
}


// 测试用例
// 输入 n = 10, pick = 6
// 输出 6
int main() {
    int re=guessNumber(10);
    printf("%d", re);
    return 0;
}

【繁华倾夏】【每日力扣题解分享】【Day8】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值