---
# System prepended metadata

title: 69-Sqrt(x)
tags: [Easy]

---

# 69-Sqrt(x)
###### tags: `Easy`
## Question
https://leetcode.com/problems/sqrtx/
## Key
* 因為平方根不可能超越數字本身，所以以0到數字本身(其實到x/2就可以了)為範圍，用二元搜尋來嘗試找並比較是否為平方根
* 要注意的是剛好不為平方跟的時候，二元搜尋找完不會是正確答案，所以答案不是mid，而是一個平方比x小的數，所以要取floor，是left-1
## Reference
## Solution
```cpp=
class Solution {
public:
    int mySqrt(int x) {
        if(x==1)
        {
            return 1;
        }
        long mid = 0;
        int left = 0;
        int right = x/2;
        while(left <= right)
        {
            mid = (left+right)/2;
            if(mid*mid == x)
            {
                return mid;
            }
            else if(mid*mid > x)
            {
                right = mid-1;
            }
            else
            {
                left = mid+1;
            }
        }
        return left-1;
    }
};
```
