LeetCode-367-有效的完全平方数
有效的完全平方数
题目描述:给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
完全平方数:完全平方指用一个整数乘以自己例如
1*1
,2*2
,3*3
等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。完全平方数是非负数,而一个完全平方数的项有两个。进阶:不要 使用任何内置的库函数,如 sqrt 。
示例说明请见LeetCode官网。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-perfect-square/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法一:二分查找法
用二分查找的方法来寻找num的开方是否是一个整数。首先,声明low为0,high为最大整数的平方根,二分查找的过程如下:
- 首先,low不大于high;
- 声明一个mid,mid等于
(low + high) / 2
;- 如果
mid * mid == num
,则说明num是一个完全平方数,直接返回true;- 如果
mid * mid > num
,则将high设置为mid - 1
,然后进行下一轮处理;- 如果
mid * mid < num
,则将low设置为mid + 1
,然后进行下一轮处理。最后,如果没找到整数的平方等于num,则说明num不是一个完全平方数,返回false。
public class LeetCode_367 {
/**
* 二分查找法
* @param num
* @return
*/
public static boolean isPerfectSquare(int num) {
int low = 1, high = (int) Math.sqrt(Integer.MAX_VALUE);
while (low <= high) {
int mid = (low + high) / 2;
if (mid * mid == num) {
return true;
} else if (mid * mid > num) {
high = mid - 1;
} else if (mid * mid < num) {
low = mid + 1;
}
}
return false;
}
public static void main(String[] args) {
System.out.println(isPerfectSquare(14));
}
}
【每日寄语】 愿你忠于自己,活的认真;笑得放肆。
分类:
LeetCode-个人题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了