0367-leetcode算法实现之有效完全平方根-valid-perfect-square-python&golang实现

给定一个 正整数 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
}
原文地址:https://www.cnblogs.com/davis12/p/15405839.html