给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
说明:不要使用任何内置的库函数,如 sqrt。
示例 1:
输入:16
输出:True

golang


  • 二分查找
    满足二分查找的条件,所以可以用二分查找,直接套公式即可
    1. func isPerfectSquare(num int) bool {
    2. left := 0
    3. right := num/2 + 1
    4. for left <= right {
    5. mid := (left + right) >> 1
    6. if mid * mid == num {
    7. return true
    8. }else if mid * mid < num {
    9. left = mid + 1
    10. }else {
    11. right = mid - 1
    12. }
    13. }
    14. return false
    15. }