leet-code/src/main/java/leetcode/editor/cn/GuessNumberHigherOrLower.java
huangge1199@hotmail.com 8de15a737f 374:猜数字大小
2021-06-14 21:39:23 +08:00

108 lines
2.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//猜数字游戏的规则如下:
//
//
// 每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。
// 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。
//
//
// 你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-11 或 0
//
//
// -1我选出的数字比你猜的数字小 pick < num
// 1我选出的数字比你猜的数字大 pick > num
// 0我选出的数字和你猜的数字一样。恭喜你猜对了pick == num
//
//
// 返回我选出的数字。
//
//
//
// 示例 1
//
//
//输入n = 10, pick = 6
//输出6
//
//
// 示例 2
//
//
//输入n = 1, pick = 1
//输出1
//
//
// 示例 3
//
//
//输入n = 2, pick = 1
//输出1
//
//
// 示例 4
//
//
//输入n = 2, pick = 2
//输出2
//
//
//
//
// 提示:
//
//
// 1 <= n <= 231 - 1
// 1 <= pick <= n
//
// Related Topics 二分查找
// 👍 148 👎 0
package leetcode.editor.cn;
//374:猜数字大小
class GuessNumberHigherOrLower {
public static void main(String[] args) {
//测试代码
Solution solution = new GuessNumberHigherOrLower().new Solution();
}
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
/**
* 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);
*/
public class Solution extends GuessGame {
public int guessNumber(int n) {
int start = 1;
int end = n;
while (start < end) {
int num = start + (end - start) / 2;
int result = guess(num);
if (result == 0) {
return num;
}
if (result == -1) {
end = num - 1;
} else {
start = num + 1;
}
}
return start;
}
int guess(int num) {
return 0;
}
}
private class GuessGame {
}
//leetcode submit region end(Prohibit modification and deletion)
}