给定一个正整数num,编写一个函数,如果num是一个完全平方数,则返回true,否则返回false。这时候我们应该怎么做?今天小编带大家了解一下,有需要的可以参考参考。
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
说明:不要使用任何内置的库函数,如 sqrt。
示例 1:
输入:16输出:True
登录后复制
示例 2:
立即学习“PHP免费学习笔记(深入)”;
输入:14输出:False
登录后复制
解题思路 1
php 不能使用 pow 函数,骚操作是 ** 0.5 这样的方式,自乘 0.5 次从 PHP5.6.0开始和根号效果一样。
代码
class Solution { /** * @param Integer $num * @return Boolean */ function isPerfectSquare($num) { return $num**0.5 == (int)($num**0.5); }}
登录后复制
解题思路 2
利用完全平方数的性质,完全平方数是一系列奇数之和,例如:
1 = 14 = 1 + 39 = 1 + 3 + 516 = 1 + 3 + 5 + 725 = 1 + 3 + 5 + 7 + 936 = 1 + 3 + 5 + 7 + 9 + 11....1+3+...+(2n-1) = (2n-1 + 1) n/2 = n* n时间复杂度为 O(sqrt(n))。
登录后复制
代码
class Solution { /** * @param Integer $num * @return Boolean */ function isPerfectSquare($num) { $start = 1; while($num > 0) { $num -= $start; // 累减到最后是 0 $start += 2; // 每次 +2 保持是连续奇数 } return $num == 0; }}
登录后复制
解题思路3
二分查找
代码
class Solution { /** * @param Integer $num * @return Boolean */ function isPerfectSquare($num) { $left = 0; $right = $num; while($left $num) { $right = $mid - 1; } else { $left = $mid + 1; } } return $left * $left == $num; }}
登录后复制
推荐学习:php视频教程
以上就是PHP如何判断是否为有效的完全平方数的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2113860.html