LeetCode_374. Guess Number Higher or Lower
2024-10-21 05:10:24
374. Guess Number Higher or Lower
Easy
We are playing the Guess Game. The game is as follows:
I pick a number from 1 to n. You have to guess which number I picked.
Every time you guess wrong, I'll tell you whether the number is higher or lower.
You call a pre-defined API guess(int num)
which returns 3 possible results (-1
, 1
, or 0
):
-1 : My number is lower
1 : My number is higher
0 : Congrats! You got it!
Example :
Input: n = 10, pick = 6
Output: 6
package leetcode.easy;
/* The guess API is defined in the parent class GuessGame.
@param num, your guess
@return -1 if my number is lower, 1 if my number is higher, otherwise return 0
int guess(int num); */ class GuessGame {
public int guess(int num) {
if (6 > num) {
return -1;
} else if (6 == num) {
return 0;
} else {
return 1;
}
}
} public class GuessNumberHigherOrLower extends GuessGame {
public int guessNumber1(int n) {
for (int i = 1; i < n; i++) {
if (guess(i) == 0) {
return i;
}
}
return n;
} public int guessNumber2(int n) {
int low = 1;
int high = n;
while (low <= high) {
int mid = low + (high - low) / 2;
int res = guess(mid);
if (res == 0) {
return mid;
} else if (res < 0) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
} public int guessNumber3(int n) {
int low = 1;
int high = n;
while (low <= high) {
int mid1 = low + (high - low) / 3;
int mid2 = high - (high - low) / 3;
int res1 = guess(mid1);
int res2 = guess(mid2);
if (res1 == 0) {
return mid1;
}
if (res2 == 0) {
return mid2;
} else if (res1 < 0) {
high = mid1 - 1;
} else if (res2 > 0) {
low = mid2 + 1;
} else {
low = mid1 + 1;
high = mid2 - 1;
}
}
return -1;
} @org.junit.Test
public void test() {
GuessNumberHigherOrLower guessNumberHigherOrLower = new GuessNumberHigherOrLower();
System.out.println(guessNumberHigherOrLower.guessNumber1(10));
System.out.println(guessNumberHigherOrLower.guessNumber2(10));
System.out.println(guessNumberHigherOrLower.guessNumber3(10));
}
}
最新文章
- js中创建数组的方法
- android 动态设置Framelayout,view,imageView,Layout高度
- Java 基础【10】 I/O流概念分析整理
- QT共享库的创建与调用(初级)(附:UI界面不能被改变的其中一个原因)
- GitLab安装说明
- oracle断电重启之ORA-00600[4194]
- DataTable 中Distinct操作
- USB Packet Types
- 微信/QQ机器人的实现
- sqlite 获取数据库中的所有表
- Java客户端Jedis的八种调用方式
- sqlserver字符串拆分(split)方法汇总
- 【Sort】RadixSort基数排序
- MySql数据库第一天
- session多服务器共享的方案
- 完美解决--用VS中的Git做代码管理器,与他人共享代码
- C# DataGridView 的UserDeletingRow事件,删除
- LAMP源码安装,搭建zabbix监控
- 第26月第7天 mac如何matplotlib中文乱码问题
- shell-awk详细笔记