LeetCode算法题-Valid Perfect Square(Java实现-四种解法)

Vivado 2021.1 实战:手把手教你用IEEE1735 V2加密你的Verilog源码(附完整TCL命令) 本文详细介绍了在Vivado 2021.1中使用IEEE1735 V2标准加密Verilog源码的全流程,包括许可证申请、密钥文件配置、TCL命令执行及加密后验证。通过实战步骤和完整TCL命令,帮助开发者有效保护FPGA设计知识产权,确保核心算法安全。 阅读详情

这是悦乐书的第209次更新,第221篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第77题(顺位题号是367)。给定正整数num,写一个函数,如果num是一个完美的正方形,则返回True,否则返回False。例如:

输入:16
输出:true

输入:14
输出:false

注意:不要使用任何内置库函数,例如sqrt。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

暴力解法,定义一个long类型的变量,for循环判断其平方是否小于num,但是不要写循环体,这样省时,最后直接判断其平方是否等于num。

public boolean isPerfectSquare(int num) {
    if (num <= 1) {
        return num == 1;
    }
    long i = 1;
    for( ; i*i < num; i++);
    return i*i == num;
}

03 第二种解法

使用二分查找,起点为1,终点为num,取两数中间值,然后判断平方是否等于num,如果大了,就把终点指向当前中间值减1;如果小了,就把起点指向当前中间值加1。

此解法中,为了防范溢出的风险,使用了long类型的变量。

public boolean isPerfectSquare2(int num) {
    if (num <= 1) {
        return num == 1;
    }
    long start = 1;
    long end = num;
    while (start <= end) {
        long mid = (start+end)/2;
        if (mid*mid == num) {
            return true;
        }
        if (mid*mid < num) {
            start = mid + 1;
        }
        if (mid*mid > num) {
            end = mid -1;
        }
    }
    return false;
}

04 第三种解法

使用牛顿迭代法,核心代码是:

x*x = num
x = num/x
2*x = x + num/x
x = (x + num/x)/2

对于x的初始值,我们取num的值,循环的判断条件是x的平方大于num,最后判断x的平方是否等于num。

public boolean isPerfectSquare3(int num) {
    long x = num;
    while (x*x > num) {
        x = (x + num / x) / 2; 
    }
    return x*x == num;
}

05 第四种解法

此题其实就是判断num能否被开平方且结果是整数。如1,4,9,16,25,36等,这些数字都是可以,。同样,我们可以观察一组奇数之和:

1 = 1

1+3 = 4

1+3+5 = 9

1+3+5+7 = 16

1+3+5+7+9 = 25

1+3+5+7+9+11 = 36

n个奇数(1,3,5,7,…)之和等于n的平方,其中n大于0。

对此,我们可以对num做减法,每次减去一个奇数,最后判断是否等于0。

public boolean isPerfectSquare4(int num) {
    int i = 1;
    while (num > 0) {
        num -= i;
        i += 2;
    }
    return num == 0;
}

06 小结

算法专题目前已连续日更超过两个月,算法题文章77+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

Android车载蓝牙开发全攻略:从基础到高级优化 本文系统介绍了Android车载蓝牙开发的核心技术与实践指南。文章首先阐述了蓝牙在智能汽车中的关键作用,包括免提通话、音频流媒体等应用场景。随后详细解析了蓝牙协议基础,重点介绍了HFP、A2DP等车载常用协议。开发实战部分提供了设备发现、连接、数据传输的完整代码示例,并融入多线程和内存优化技巧。通过真实车载案例,展示了启动时间、流畅度和资源使用的优化策略。最后针对面试需求,提供了专业的技术问答,涵盖蓝牙开发全流程。全文紧密结合Android车载开发职位要求,为开发者提供了一套完整的蓝牙技术解决方案。 阅读详情

相关推荐

Maxwell中铜导体热损计算的关键步骤与技巧

本文详细介绍了在Maxwell软件中准确计算铜导体热损的关键步骤与实用技巧。重点阐述了如何正确设置涡流场求解器、启用涡流效应、根据工作频率计算并应用肌肤深度以指导网格剖分,以及准确施加激励和定义电流回路。文章还强调了使用温度相关材料属性和进行后处理验证的重要性,旨在帮助工程师获得可靠的热损计算结果,优化产品设计。

weixin_29232121的博客 500

LeetCode|5.最长回文子串(Java)

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: "babad" 输出: "bab" 注意: "aba"也是一个有效答案。 示例 2:输入: "cbbd" 输出: "bb"正确代码:package LeetCode; public class A5最长回文子串 { public String longestPalindrome(String...

Sandwichsauce的博客 1520

FANUC机器人PROFINET通讯方式组态

6 然后对模块进行命名及更改IP地址,点击“Network Detection”,进行扫描,会生成下图,双击商科模块会生成下边的对话框,对模块进行命名及更改IP地址,在“Permanent Name”处点对勾,完成后点击“Apply Name及Apply”进行命名。此处注意,上图左上在线在不了,网络扫描处上面也灰色的,扫描不了。5双击abcc-prt-2-port RT(FW1.13),生成下面图标,在右边点击1、2把原来内容删掉,从新在左侧加载 ,使1、2是输出,3、4为输入,完成后点击OK。

dxs93的博客 8435

LeetCode 5. Longest Palindromic Substring 解题报告

LeetCode 5. Longest Palindromic Substring 解题报告题目描述Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.示例Example 1: Input : “babad” Ou

骆小坑的填坑之旅 3212

echarts 生成中国陕西省份(或其他省份)的地图,大屏使用

效果图: 一、首先第一步需要下载echarts和获取到陕西身份的地图信息。 1.下载echarts链接(官网): Apache ECharts 2.生成指定省份的地图数据信息,数据可以在阿里云获取。 DataV.GeoAtlas地理小工具系列 如图,点击左圈需要的省份,这里我选择的是陕西省,然后点击右圈复制下载链接,得到一个json格式的数据,可以在json转换网站转成js格式。 Json在线解析格式化-Json在线校验Json格式化压缩-Jsons在线工具 转成js格.

PrimaryColor 3890

OrCAD Capture CIS 17.4 原理图绘制

OrCAD Capture CIS 17.4 原理图绘制

qq_38960013的博客 7638

leetcode-java-367. Valid Perfect Square

/* Given a positive integer num, write a function which returns True if num is a perfect square else False. Example 1: Input: 16 Returns: TrueExample 2: Input: 14 Returns: False本题就是取平方根,然后判断得到的平方根是否是整数

王欢的博客 536

GD32F407工程模板搭建全记录:从零整理固件库、创建文件夹到编译通过

本文详细记录了GD32F407工程模板的搭建过程,从固件库整理、目录规划到Keil环境配置,帮助开发者快速搭建可维护的嵌入式工程结构。重点介绍了开发环境搭建、工程目录设计、Keil配置及常见编译问题解决方案,适合嵌入式开发者参考。

weixin_29164497的博客 122

leetcode58题---java解法

public class Solution {     public int lengthOfLastWord(String s) {          int locaBlank=s.lastIndexOf(' '); int leng=s.length(); /*         大小写字母和空格,检验最后一个单词的长度         先判断是否为空        

Y. LI 755

QT的温湿度显示系统

大家好,这里是石侃侃的博客,欢迎前来讨论这篇文章介绍的是DHT11在2440上的基于Qt5.6的应用基于单片机系统的温湿度监测系统构成框图如图2-1所示。图2-1 系统构成框图该系统采用单片机s3c2440作为了本设计的核心元件。利用LCD作为了显示器件,利用触摸屏作为用户界面输入设备,第一行显示当前实时的温度,湿度,第二行依次显示历史时刻最高的温度值,最高的湿度值。第三行是一个文本框,记录了程...

zxpcus的博客 1万+

CH7034B显示模块原理图设计,已量产

显示桥接板的价值,不在于简单把 RGB 排线换成另一种接口,而在于能否把并行视频、时钟、显示控制、模拟输出和辅助配置同时组织成稳定系统。当前这张 CH7034B 原理图就是这种思路:U3 CH7034B 作为核心桥接芯片,输入侧是 LCD_R0~R7、LCD_G0~G7、LCD_B0~B7、LCD_DE、LCD_HSYNC、LCD_VSYNC、LCD_CLK 与 LCD_BL,输出侧则通过 DAC0~DAC2 和 DDC_SC/DDC_SD 形成模拟显示接口边界。

不脱发的程序猿 168

java算法题解法_LeetCode算法题-Valid Perfect Square(Java实现-四种解法)

这是悦乐书的第209次更新,第221篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第77题(顺位题号是367)。给定正整数num,写一个函数,如果num是一个完美的正方形,则返回True,否则返回False。例如:输入:16输出:true输入:14输出:false注意:不要使用任何内置库函数,例如sqrt。本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,...

weixin_39695374的博客 148

2023年03月CCF-GESP编程能力等级认证Scratch图形化编程一级真题解析

以下不属于计算机输入设备的有( )?A:键盘B:音响C:鼠标D:传感器。

人生就是一个不断学习的过程 1112

完美的求解java代码_LeetCode算法题-Valid Perfect Square(Java实现-四种解法)

这是悦乐书的第209次更新,第221篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第77题(顺位题号是367)。给定正整数num,写一个函数,如果num是一个完美的正方形,则返回True,否则返回False。例如:输入:16输出:true输入:14输出:false注意:不要使用任何内置库函数,例如sqrt。本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,...

weixin_39837139的博客 142

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Valid Perfect Square

Valid Perfect Square Description Given a positive integer num, write a function which returns True if num is a perfect square else False. Note - Do not use any built-in library function such as ...

mcrwayfun,欢迎你 3568

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

valid perfect square(leetcode)

valid perfect square题目介绍解题方法 &nbsp;&nbsp;最近在刷leetcode, 遇到一个很easy的问题,但是用蛮力的方法,根本解不开,想着应该是数学得某个知识,这个结介绍一下。 题目介绍 &nbsp;&nbsp;这个题目就是输入一个整数,来判断它是不是一个整数的平方,虽然可以用蛮力算法来解决,但是在提价的时候会遇到 Time Limit Exceed这个问题,所以常...

sodalife的博客 239

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

leetcode Valid Perfect Square

leetcode Valid Perfect Square  题目:https://leetcode.com/problems/valid-perfect-square/ 解题思路:利用Math.sqrt 获得值是否等于强制Math.sqrt public static void main(String[] args) { int num=16; boolean perfectSqu...

厚积薄发的博客 332

【LeetCode】367. Valid Perfect Square 有效的完全平方数(Easy)(JAVA)

【LeetCode】367. Valid Perfect Square 有效的完全平方数(Easy)(JAVA) 题目地址: https://leetcode.com/problems/valid-perfect-square/ 题目描述: Given a positive integer num, write a function which returns True if num is a perfect square else False. Follow up: Do not use any buil

qq_16927853的博客 228

LeetCode:Valid Perfect Square

Valid Perfect Square Total Accepted: 1976 Total Submissions: 5317 Difficulty: Medium Given a positive integer num, write a function which returns True if num is a perfect squ

walker lee 3232

[leetcode] 367. Valid Perfect Square 解题报告

题目链接: https://leetcode.com/problems/valid-perfect-square/ Given a positive integer num, write a function which returns True if num is a perfect square else False. Example 1: Input: 16 Returns

小榕流光的专栏 4942

leetcode 367. Valid Perfect Square

Given a positive integer num, write a function which returns True if num is a perfect square else False. Note: Do not use any built-in library function such as sqrt. Example 1: Input: 16 Return

showerGG的博客 221

leetcode Valid Perfect Square题解

题目描述: Given a positive integernum, write a function which returns True ifnumis a perfect square else False. Note:Do notuse any built-in library function such assqrt. Example 1: Input: 16 Ou...

leo_weile的博客 160

LeetCode:367. Valid Perfect Square

1 package day20170206; 2 //LeetCode:367. Valid Perfect Square 3 /* 4 Given a positive integer num, write a function which returns True if num is a perfect square else False. 5 6 Note: D...

weixin_34185364的博客 147

leetcode[Valid Perfect Square]//待整理多种解法

解法一: public class Solution { public boolean isPerfectSquare(int num) { for(int i = 1; i <= num; i++){ if(num == Math.pow(i, 2)) return true; else if(num > Math

Carmelo_Z的博客 272

LeetCode-367. Valid Perfect Square (Java)

Given a positive integer num, write a function which returns True if num is a perfect square else False. Note: Do not use any built-in library function such as sqrt. Example 1: Input: 16

NOadu的专栏 545

[leetcode-367]Valid Perfect Square(java)

这道题利用了如下一个数学公式 1+3+5+..+(2N-1) == N^2; 因此我们从1开始累加即可,加法的速度要比乘法的速度快得多,而且还不用考虑一不小心就溢出的问题。代码如下:public class Solution { public boolean isPerfectSquare(int num) { for(int i = 1;num > 0;i+=2)

中华胡杨的专栏 1223
上一篇: LeetCode算法题-Intersection of Two Arrays II(Java实现)
下一篇: LeetCode算法题-Sum of Two Integers(Java实现)
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值