给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
进阶:不要 使用任何内置的库函数,如 sqrt 。
示例 1:
输入:num = 16
输出:true
示例 2:
输入:num = 14
输出:false
提示:
1 <= num <= 2^31 - 1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-perfect-square
python
class Solution:
def isPerfectSquare(self, num: int) -> bool:
if num < 1:
return False
left, right, ans = 0, num, -1
while left <= right:
mid = left + ((right-left)>>1)
if mid*mid > num:
right = mid - 1
else:
ans = mid
left = mid + 1
res = True if ans*ans == num else False
return res
if __name__ == "__main__":
num = 888
test = Solution()
print(test.isPerfectSquare(num))
golang
package main
import (
"fmt"
)
func main() {
var x int = 656
fmt.Println(isperfectSquare(x))
}
func isperfectSquare(num int) bool {
if num < 1 {
return false
}
var left int = 0
var right int = num
var ans int = -1
for left <= right {
var mid int = left + ((right - left) >> 1)
if mid*mid > num {
right = mid - 1
} else {
ans = mid
left = mid + 1
}
}
var res bool
if ans*ans == num {
res = true
} else {
res = false
}
return res
}