LeetCode 374. Guess Number Higher or Lower【二分】简单
发布日期:2021-07-01 03:02:23 浏览次数:3 分类:技术文章

本文共 1397 字,大约阅读时间需要 4 分钟。

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 will tell you whether the number I picked is higher or lower than your guess.

You call a pre-defined API int guess(int num), which returns 3 possible results:

  • -1: The number I picked is lower than your guess (i.e. pick < num).
  • 1: The number I picked is higher than your guess (i.e. pick > num).
  • 0: The number I picked is equal to your guess (i.e. pick == num).

Return the number that I picked.

Example 1:

Input: n = 10, pick = 6Output: 6

Example 2:

Input: n = 1, pick = 1Output: 1

Example 3:

Input: n = 2, pick = 1Output: 1

Example 4:

Input: n = 2, pick = 2Output: 2

Constraints:

  • 1 <= n <= 231 - 1
  • 1 <= pick <= n

题意:猜数字游戏。


解法 二分

/**  * 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); */class Solution {
public: int guessNumber(int n) {
int l = 0, h = n; while (l <= h) {
int m = l + (h - l) / 2, t = guess(m); if (t == 0) return m; else if (t == -1) h = m - 1; else l = m + 1; } return 0; }};

运行效率如下:

执行用时:0 ms, 在所有 C++ 提交中击败了100.00% 的用户内存消耗:5.7 MB, 在所有 C++ 提交中击败了82.14% 的用户

转载地址:https://memcpy0.blog.csdn.net/article/details/117889062 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:LeetCode 1897. Redistribute Characters to Make All Strings Equal【字符串/哈希表】简单
下一篇:LeetCode 600. Non-negative Integers without Consecutive Ones【动态规划/位运算】困难

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月07日 22时29分02秒