# LC 374. Guess Number Higher or Lower
### [Problem link](https://leetcode.com/problems/guess-number-higher-or-lower/)
###### tags: `leedcode` `python` `easy` `Binary Search`
We are playing the Guess Game. The game is as follows:
I pick a number from <code>1</code> to <code>n</code>. 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 <code>int guess(int num)</code>, which returns three possible results:
- <code>-1</code>: Your guess is higher than the number I picked (i.e. `num > pick`).
- <code>1</code>: Your guess is lower than the number I picked (i.e. `num < pick`).
- <code>0</code>: your guess is equal to the number I picked (i.e. <code>num == pick</code>).
Return the number that I picked.
**Example 1:**
```
Input: n = 10, pick = 6
Output: 6
```
**Example 2:**
```
Input: n = 1, pick = 1
Output: 1
```
**Example 3:**
```
Input: n = 2, pick = 1
Output: 1
```
**Constraints:**
- <code>1 <= n <= 2<sup>31</sup> - 1</code>
- <code>1 <= pick <= n</code>
## Solution 1 - Binary Search
```python=
# The guess API is already defined for you.
# @param num, your guess
# @return -1 if num is higher than the picked number
# 1 if num is lower than the picked number
# otherwise return 0
# def guess(num: int) -> int:
class Solution:
def guessNumber(self, n: int) -> int:
left, right = 1, n
while left <= right:
mid = (left + right) // 2
if guess(mid) == 0:
return mid
elif guess(mid) == 1:
left = mid + 1
else:
right = mid - 1
```
>### Complexity
>| | Time Complexity | Space Complexity |
>| ----------- | --------------- | ---------------- |
>| Solution 1 | O(logn) | O(1) |
## Note
x