[Golang]力扣Leetcode - 374. 猜数字大小(二分查找)
[Golang]力扣Leetcode - 374. 猜数字大小(二分查找)
题目:猜数字游戏的规则如下:
- 每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。
- 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。
你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0):
- -1:我选出的数字比你猜的数字小 pick < num
- 1:我选出的数字比你猜的数字大 pick > num
- 0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pick == num
返回我选出的数字。
链接: 力扣Leetcode - 374. 猜数字大小.
示例 1:
输入:n = 10, pick = 6
输出:6
示例 2:
输入:n = 1, pick = 1
输出:1
示例 3:
输入:n = 2, pick = 1
输出:1
示例 4:
输入:n = 2, pick = 2
输出:2
思路:用二分查找,mid = left + right
- 如果 guess(mid) = -1,证明我们猜的数比他想的大,right = mid - 1 缩小范围;
- 如果 guess(mid) = 1,证明我们猜的数比他想的小,left = mid + 1 缩小范围;
- 如果 guess(mid) = 0,就证明他想的数就是 mid
直至找到他要的数 return 出来
Go代码:
package mainimport "fmt"func guess(num int) int {// 1~10 假设我想的数是 6if num < 6 {return 1// 1:我选出的数字比你猜的数字大} else if num > 6 {return -1// -1:我选出的数字比你猜的数字小} else {return 0}
}func guessNumber(n int) int {// 二分查找left, right := 1, nfor left <= right {mid := (left + right) / 2guess := guess(mid)if guess == -1 {right = mid - 1} else if guess == 1 {left = mid + 1} else if guess == 0 {return mid}}return left
}func main() {fmt.Println(guessNumber(10))
}
提交截图:
[Golang]力扣Leetcode - 374. 猜数字大小(二分查找)相关推荐
- Java实现 LeetCode 374 猜数字大小
374. 猜数字大小 我们正在玩一个猜数字游戏. 游戏规则如下: 我从 1 到 n 选择一个数字. 你需要猜我选择了哪个数字. 每次你猜错了,我会告诉你这个数字是大了还是小了. 你调用一个预先定义好的 ...
- LeetCode:374. 猜数字大小
374. 猜数字大小 猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字. 请你猜选出的是哪个数字. 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了. 你可以 ...
- Java实现 LeetCode 374 猜数字大小 II
375. 猜数字大小 II 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字. 每次你猜错了,我都会告诉你,我选的数字比你的大了或者小了. 然而,当你猜 ...
- LeetCode 374. 猜数字大小(二分查找)
1. 题目 我们正在玩一个猜数字游戏. 游戏规则如下: 我从 1 到 n 选择一个数字. 你需要猜我选择了哪个数字. 每次你猜错了,我会告诉你这个数字是大了还是小了. 你调用一个预先定义好的接口 gu ...
- Leetcode 374.猜数字大小
Time: 20190909 Type: Easy 题目描述 我们正在玩一个猜数字游戏. 游戏规则如下: 我从 1 到 n 选择一个数字. 你需要猜我选择了哪个数字. 每次你猜错了,我会告诉你这个数字 ...
- [Golang]力扣Leetcode - 852. 山脉数组的峰顶索引(二分查找)
[Golang]力扣Leetcode - 852. 山脉数组的峰顶索引(二分查找) 题目:符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 < ...
- LeetCode-二分查找-374. 猜数字大小
374. 猜数字大小 思路:二分法 /** * Forward declaration of guess API.* @param num your guess* @return -1 if num ...
- 374. 猜数字大小
#374. 猜数字大小 难度:简单 考察:二分查找 题目描述 解题思路 题目有点说的不清楚,总之: guess返回-1,如果猜的数字比实际选择的数字大 1,如果猜的数字比实际选择的大 1.二分递归 p ...
- LeetCode题解:374.猜数字大小
猜数字大小 一.LeetCode题解 瞧一瞧(求star!) LeetCode题解Javascript版本:Gitbook版本传送门 LeetCode题解Javascript版本:CSDN传送门 前端 ...
最新文章
- R可视化绘制威布尔分布(Weibull Distribution)
- php扩展 静态库,编译PHP扩展的方法
- maven java 可执行jar_Maven项目打包成可执行Jar文件
- 中国汽车电器运营现状与十四五发展规划报告2022-2028年版
- python内建集合模块collections功能,计数,有序,双向队列
- 【代码】synchronized是可重入锁并且多个sync代码块顺序执行
- mysql count 不等于_Mysql 不同的 count 区别
- HelloWorld新手常见问题
- c语言实现ftp网络应用程序,使用C语言socket实现windows pc与ftp服务器通信---socket实现ftp客户端...
- 科大奥锐实验报告霍尔效应_大学物理实验报告系列之霍尔效应
- python Scrapy 从零开始学习笔记(一)
- zabbix服务器与客户端(Linux+Windows)的搭建
- Windows7下搭建Eclipse+Python开发环境
- 手机怎么往服务器传文件,windows怎么用指令给手机传文件
- 计算机论文注释范例,论文注释的标准格式范例(范例详解论文正确书写规范)...
- MindManager22直装版思维导图新功能
- Install Ubuntu18.04.1 and Win7 on A53S
- Windows设置默认打印机
- Excel数据合并(追加写入)
- 反编译 轻松调频 Android APP 下载“飞鱼秀”录音