学习时间:
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】