---
# System prepended metadata

title: 367. Valid Perfect Square
tags: [LeetCode]

---

---
tags: LeetCode
---

# 367. Valid Perfect Square
Given a positive integer num, write a function which returns True if num is a perfect square else False.

Note: Do not use any built-in library function such as sqrt.

Example 1:    
```
Input: 16    
Output: true    
```

Example 2:    
```
Input: 14    
Output: false    
```
---
輸入範本如下
```C#
public class Solution {
    public bool IsPerfectSquare(int num) {
        
    }
}
```


### 直覺想法
[69. Sqrt(x)](https://hackmd.io/A_tG70spSzeXmPYAJXvcGg?view) 的變化題型

只要判斷是否有平方根就好.

1. 迴圈解
    ```
    36 ms	14.4 MB	
    You are here!
    Your runtime beats 92.86 % of csharp submissions.
    public bool IsPerfectSquare(int num)
    {
        int left = 0, right = num / 2 + 1;
        while (left <= right)
        {
            int mid = left + (right - left) / 2;
            long value = (long)mid * mid;
            if (value == num)
            {
                return true;
            }
            else if (value < num)
            {
                left = mid + 1;
            }
            else
            {
                right = mid - 1;
            }
        }
        return false;
    }
    ```

2. 遞迴解
    ```C#
    36 ms	14.5 MB
    You are here!
    Your runtime beats 92.86 % of csharp submissions.
    public bool IsPerfectSquare(int num)
    {
        return BinarySerach(0, num / 2 + 1, num);

        bool BinarySerach(int left, int right, int target)
        {
            if (left > right)
                return false;

            int mid = left + (right - left) / 2;
            long value = (long)mid * mid;
            return value == target ? true : 
                   value < target ? BinarySerach(mid + 1, right, target) : BinarySerach(left, mid - 1, target);
        }
    }
    ```









### Thank you! 

You can find me on

- [GitHub](https://github.com/s0920832252)
- [Facebook](https://www.facebook.com/fourtune.chen)

若有謬誤 , 煩請告知 , 新手發帖請多包涵

# :100: :muscle: :tada: :sheep: 
