diff --git a/367. Valid Perfect Square.md b/367. Valid Perfect Square.md
new file mode 100644
index 0000000..b9d9775
--- /dev/null
+++ b/367. Valid Perfect Square.md	
@@ -0,0 +1,22 @@
+# [367. Valid Perfect Square](https://leetcode.com/problems/valid-perfect-square/description/)
+# 思路
+题目要求判断一个数是否是一个某个数的平方。要求不能调用库里的sqrt函数。   
+可以考虑二分搜索1到num/2范围的数mid, 判断mid的平方是否等于num。   
+注意:如果直接计算`if(mid * mid == num)` 会存在溢出的情况,所以应该`if(num % mid == 0 && num / mid == mid)`。
+# C++
+```
+class Solution {
+public:
+    bool isPerfectSquare(int num) {
+        if(num == 1) return true;
+        int low = 1, high = num / 2, mid;
+        while(low <= high){
+            mid = (low + high) / 2;
+            if(num % mid == 0 && num / mid == mid) return true;
+            if(mid <= num / mid) low = mid + 1;
+            else high = mid - 1;
+        }
+        return false;
+    }
+};
+```