题目来源:leetcode 367
题目很简单,判断一个数是不是完全平方数(禁止使用库函数sqrt等),直接二分查找就可以。注意(x/2+1)的平方一定大于x,所以一开始搜索的范围就是从1到x/2+1.
注意go语言中的循环关键字只有for,还有if else语句中括号的位置。
package main
import ("fmt")
func main(){
fmt.Printf("%t %t\n",isPerfectSquare(16),isPerfectSquare(55))
fmt.Printf("%t %t\n",isPerfectSquare(144),isPerfectSquare(20))
}
func isPerfectSquare(num int) bool{
var left,right int
left=1;right=num/2+1;
for left<=right{
var mid int
mid=left+(right-left)/2
if mid*mid==num{
return true
}else if mid*mid<num{
left=mid+1
}else{
right=mid-1
}
}
return false
}
运行截图: