LeetCode 374. Guess Number Higher or Lower
题目:
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:
n = 10, I pick 6.
Return 6.
思路:
如果给的值比要找的大,guess返回-1;如果给的值比要找的小,guess返回1;如果就是要找的值,返回0.
利用二分查找来找这个值,先将1赋给low,n赋给high,num其实是mid,不要写(high+mid)/2,先进行一次判断num是否为要找的值,返回值赋给res。当res不为0,那么其只能为1或者-1,如果为1,即给的数比较小,要改变low为num+1,更新num,再做判断此时的num是否是要找的值;如果为-1时即给的数比较大,要改变high为num-1,更新num,再做判断此时的num是否是要找的值。循环结束后,num即为要找的值。
代码:
// Forward declaration of guess API.
// @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 Solution {
public:int guessNumber(int n) {int low=1;int high=n;//先将1赋给low,n赋给highint num=(high-low)/2+low;//num其实是mid,不要写(high+mid)/2int res=guess(num);//先进行一次判断num是否为要找的值,返回值赋给reswhile(res){//如果res不为0,那么其只能为1或者-1if(res==1){//如果为1,即给的数比较小,要改变low为num+1low=num+1;num=(high-low)/2+low;//更新num,再做判断此时的num是否是要找的值res=guess(num);}else{//如果为-1时即给的数比较大,要改变high为num-1high=num-1;num=(high-low)/2+low;//更新num,再做判断此时的num是否是要找的值res=guess(num);}}return num;//循环结束后,num即为要找的值}
};
输出结果: 0ms
LeetCode 374. Guess Number Higher or Lower相关推荐
- leetcode 374. Guess Number Higher or Lower 、375. Guess Number Higher or Lower II
374. Guess Number Higher or Lower 二分查找就好 // Forward declaration of guess API. // @param num, your gu ...
- 374. Guess Number Higher or Lower*
374. Guess Number Higher or Lower* https://leetcode.com/problems/guess-number-higher-or-lower/ 题目描述 ...
- LeetCode 375. Guess Number Higher or Lower II
原题链接在这里:https://leetcode.com/problems/guess-number-higher-or-lower-ii/ 题目: We are playing the Guess ...
- 374. Guess Number Higher or Lower
题目: We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to ...
- leetcode 375. Guess Number Higher or Lower II | 375. 猜数字大小 II(动态规划思路总结)
题目 https://leetcode.com/problems/guess-number-higher-or-lower-ii/ 题解 首先,看了 Related Topics,知道这是个 dp 问 ...
- C#LeetCode刷题之#374-猜数字大小(Guess Number Higher or Lower)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3993 访问. 我们正在玩一个猜数字游戏. 游戏规则如下: 我从 ...
- LeetCode Guess Number Higher or Lower II(动态规划)
问题:从1到 n之间选取一个数字,如果猜了数字x并且猜错了,需要支付金额为x的现金.问至少 需要支付多少 思路:用dp(i,j)表示i到j之间时的最小值.则有dp(i,j)=min{pivot + m ...
- 375. Guess Number Higher or Lower II
dp[i]表示i是否能得到,初始化dp[0]为true. 遍历数组每个元素(num),对于dp中每个元素(dp[j]),如果为true,则dp[j + num] = true. 注意j必须从尾到头遍历 ...
- LeetCode:Largest Number - 求整型数组中各元素可拼合成的最大数字
2019独角兽企业重金招聘Python工程师标准>>> 1.题目名称 Largest Number(求整型数组中各元素可拼合成的最大数字) 2.题目地址 https://leetco ...
最新文章
- mybatis 1 - 获取自增ID
- android 配置aspect_Android APP全面屏适配技术要点
- Linux中su和sudo的用法整理
- java内存管理课程设计_Java内存管理分析
- 数据结构之二叉树:折纸问题——11
- PaddlePaddle预训练模型大合集
- 【Python开发】Python 适合大数据量的处理吗?
- 史上最详细Vue-CLI脚手架快速创建Vue项目教程
- visio网络拓扑图_人才测评模型是什么?5步了解好看模型图
- 基于JAVA+SpringMVC+Mybatis+MYSQL的铁路售票系统
- 我是如何把30000行代码重构成15行
- php 如何去除说有空格,php怎么去除所有空格
- Mac电脑删除某个分区
- 大屏可视化之适配和布局
- 硬盘分区无法打开,提示“文件或目录损坏且无法读取”
- 文本标注工具BRAT的安装与配置
- la java va bien口琴谱_口琴曲简谱
- ajax初始化 ztree v3,zTree_v3
- 全球医药研发支出及处方药市场发展前景分析:预计到2026年全球处方药销售额超过1.4万亿美元[图]
- 网站流量日志数据分析系统(1)