题目:
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相关推荐

  1. 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 ...

  2. 374. Guess Number Higher or Lower*

    374. Guess Number Higher or Lower* https://leetcode.com/problems/guess-number-higher-or-lower/ 题目描述 ...

  3. LeetCode 375. Guess Number Higher or Lower II

    原题链接在这里:https://leetcode.com/problems/guess-number-higher-or-lower-ii/ 题目: We are playing the Guess ...

  4. 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 ...

  5. leetcode 375. Guess Number Higher or Lower II | 375. 猜数字大小 II(动态规划思路总结)

    题目 https://leetcode.com/problems/guess-number-higher-or-lower-ii/ 题解 首先,看了 Related Topics,知道这是个 dp 问 ...

  6. C#LeetCode刷题之#374-猜数字大小(Guess Number Higher or Lower)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3993 访问. 我们正在玩一个猜数字游戏. 游戏规则如下: 我从 ...

  7. LeetCode Guess Number Higher or Lower II(动态规划)

    问题:从1到 n之间选取一个数字,如果猜了数字x并且猜错了,需要支付金额为x的现金.问至少 需要支付多少 思路:用dp(i,j)表示i到j之间时的最小值.则有dp(i,j)=min{pivot + m ...

  8. 375. Guess Number Higher or Lower II

    dp[i]表示i是否能得到,初始化dp[0]为true. 遍历数组每个元素(num),对于dp中每个元素(dp[j]),如果为true,则dp[j + num] = true. 注意j必须从尾到头遍历 ...

  9. LeetCode:Largest Number - 求整型数组中各元素可拼合成的最大数字

    2019独角兽企业重金招聘Python工程师标准>>> 1.题目名称 Largest Number(求整型数组中各元素可拼合成的最大数字) 2.题目地址 https://leetco ...

最新文章

  1. mybatis 1 - 获取自增ID
  2. android 配置aspect_Android APP全面屏适配技术要点
  3. Linux中su和sudo的用法整理
  4. java内存管理课程设计_Java内存管理分析
  5. 数据结构之二叉树:折纸问题——11
  6. PaddlePaddle预训练模型大合集
  7. 【Python开发】Python 适合大数据量的处理吗?
  8. 史上最详细Vue-CLI脚手架快速创建Vue项目教程
  9. visio网络拓扑图_人才测评模型是什么?5步了解好看模型图
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的铁路售票系统
  11. 我是如何把30000行代码重构成15行
  12. php 如何去除说有空格,php怎么去除所有空格
  13. Mac电脑删除某个分区
  14. 大屏可视化之适配和布局
  15. 硬盘分区无法打开,提示“文件或目录损坏且无法读取”
  16. 文本标注工具BRAT的安装与配置
  17. la java va bien口琴谱_口琴曲简谱
  18. ajax初始化 ztree v3,zTree_v3
  19. 全球医药研发支出及处方药市场发展前景分析:预计到2026年全球处方药销售额超过1.4万亿美元[图]
  20. 网站流量日志数据分析系统(1)

热门文章

  1. 使用conda创建环境以及出现包找不到解决方案
  2. tqdm使用(Python进度条)
  3. grumble.js--气泡形状的提示(Tooltip)控件
  4. swiper6.0改造 “翻页按钮”:自定义style样式和position - 案例篇
  5. nginx:启动、重启、关闭、版本查看、安装目录获取
  6. Emlog简约好看的博客主题末遇
  7. 用英语描述计算机操作,操作系统的英文介绍
  8. 仿花生小说蓝色小说网站导航网站源码
  9. 功能齐全的交易系统导航网源码
  10. HTTP协议原理+实践 Web开发工程师必学(笔记)