leetcode之二分法

来源:互联网 发布:乐清市知临中学 编辑:程序博客网 时间:2024/06/14 17:25

Given a positive integer num, write a function which returns True if num is a perfect square else False.

题目意思是,给一个整数,查看其平方根是不是整数,是的话返回true,否则返回false

使用牛顿迭代法,转化为x^2-n,判断x的取值范围,一开始的判断范围是在(0,x/2),在大于4的前提条件下x/2是大于x的平方根的。

得到left=0,right=x/2,取mid=(left+right)/2;;判断mid的平方是否等于x,大于的话就减小right,小于就加大left。

最后退出的条件是left<right,退出说明无法找到适合的整数。return false啦!

0 0