news 2026/9/6 3:43:49

有效的完全平方数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
有效的完全平方数

文章目录

  • 一、读题
  • 二、算法思路
  • 三、代码实现:

一、读题

题目来源:https://leetcode.cn/problems/valid-perfect-square/


题目很简单,就是判断一个数是不是完全平方数,是就返回true,不是就返回false,主包就喜欢这种第一眼就可以理解的题目哈哈哈

二、算法思路

方法一:这个题目本质也还是暴力题,判断一个数是不是完全平方数,那很简单啊,遍历嘛,从1开始遍历,直到等于num,如果找不到就说明没有,如果找到中途就直接返回结果。时间复杂度是O(n)的。

方法二:其实是方法一的优化版,我们使用二分查找可以对这个遍历的过程进行优化,每一次的二分查找结果都和num进行比较,当然了二分查找相信各位佬都是手拿把掐的,主包就不献丑了哈,可以直接看代码。时间复杂度可以优化为O(logn)的。

方法三:这个方法是一个数学方法,我们使用奇数从1开始相加,如果最终相加能够得到num,那么说明num就是完全平方数。例:4 = 1 + 3 ,9 = 1 + 3 + 5,16 = 1 + 3 + 5 + 7;时间复杂度是O(n)

原理是什么呢?不知道大家还记不记得高中学的等差数列求和,这个原理 就是根据等差数列得到的,大家可以不必要知道原理是什么,会算就可以了,有兴趣的可以继续看主包讲解,没有兴趣的可以直接看代码

16 = 1 + 3 + 5 + 7 推导得出 :S=1+3+5+7 … +(2n - 3) +(2n-1)

这个是奇数相加,我们可以直观的看出来两数之间的差是2,那说明这是一个公差为2的等差数列

等差数列求和的公式是:(首项+末项)*项数 /2

首项:1

末项 :(2n-1)

项数:n
(假设当前我的最后一项是15,那么对应就是1,3,5,7,9,11,13,15,15=(2n-1)那么n就等于8,所以项数就是8)

代入公式就得:(1 + 2n - 1) * n / 2 = n^2
说明奇数相加的结果一定是偶数,并且是一个完全平方数

验算:当n=8的时候,平方数是64,1+3+5+7 +9 +11 +13 + 15=64,

三、代码实现:

public boolean isPerfectSquare(int num) { //方法二:遍历,二分优化 ,方法一就不写了,相信大家都会 if (num == 0 || num == 1) return true; int left = 0; int right = num / 2; while (left <= right) { int mid = (right - left) / 2 + left; long ans = (long) mid * mid; if (num == ans) { return true; } else if (num > ans) { left = mid + 1; } else { right = mid - 1; } } return false; } }
class Solution { public boolean isPerfectSquare1(int num) { //方法三:数学思路,完全平方数一定是可以由不同的奇数组合而成(从1开始逐渐增大的奇数) int ans = 1; while (num > 0) { num -= ans; ans += 2; } // System.out.println(num); return num == 0; }

各位佬,如果有什么更加高效的算法欢迎评论区讨论,指导一下主包进步,原诸君共勉

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 22:38:42

YOLOv8能否检测冰川融化?气候变化观测应用

YOLOv8能否检测冰川融化&#xff1f;气候变化观测应用 在格陵兰岛的边缘&#xff0c;一块巨大的冰体正从冰川断裂滑入海洋。卫星图像清晰地记录下了这一过程——但问题是&#xff0c;我们能否在成千上万张遥感影像中&#xff0c;快速、准确且自动地识别出每一个类似的“融化信号…

作者头像 李华
网站建设 2026/9/2 23:31:28

从零开始理解去耦电容在原理图阶段的应用

去耦电容不是“补丁”&#xff1a;为什么你必须在画原理图时就想好很多硬件工程师都有过这样的经历&#xff1a;板子打回来了&#xff0c;MCU莫名其妙重启&#xff1b;ADC采样数据跳得像心电图&#xff1b;或者EMC测试一上电就超标。一番折腾后&#xff0c;发现罪魁祸首竟然是—…

作者头像 李华
网站建设 2026/9/6 0:48:21

YOLOv8能否检测非法捕鱼?海洋执法监控系统

YOLOv8能否检测非法捕鱼&#xff1f;海洋执法监控系统 在太平洋某片禁渔区的清晨&#xff0c;卫星图像显示一艘小型渔船正缓慢移动。它没有开启AIS信号&#xff0c;船尾拖着长长的阴影——疑似非法拖网作业。如果依靠传统人工巡查&#xff0c;这条线索可能要数小时后才能被发现…

作者头像 李华
网站建设 2026/9/3 0:18:21

YOLOv8能否检测快递包裹?物流分拣中心应用

YOLOv8能否检测快递包裹&#xff1f;物流分拣中心应用 在现代电商洪流的推动下&#xff0c;一个包裹从下单到送达的时间被压缩到了极限。而在这背后&#xff0c;是成千上万件快递在分拣中心高速流转的现实——每分钟上百件包裹通过传送带&#xff0c;传统人工分拣早已不堪重负。…

作者头像 李华
网站建设 2026/9/3 3:58:26

全面讲解WinDbg Preview的内核态调用栈解读

深入WinDbg Preview&#xff1a;手把手教你读懂内核态调用栈你有没有遇到过这样的场景&#xff1f;系统突然蓝屏&#xff0c;重启后只留下一个.dmp文件&#xff0c;而用户焦急地问&#xff1a;“到底是谁导致的崩溃&#xff1f;”这时候&#xff0c;如果你能打开WinDbg Preview…

作者头像 李华
网站建设 2026/9/3 6:23:13

​ ⛳️赠与读者[特殊字符]1 概述基于OCSSA-VMD-CNN-BiLSTM的轴承故障诊断研究一、研究背景与核心框架轴承作为机械系统的关键部件,其故障诊断对设备健康管理至关重要。本研

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

作者头像 李华