【Python3】【力扣题】367. 有效的完全平方数

【力扣题】题目描述:

【Python3】代码:

1、解题思路:Python函数。num的平方根 或者 num的0.5次幂。

知识点:float.is_integer(...):判断浮点数的值是否等于整数。也可以:浮点数.is_integer()。

              pow(a,b):即 a^{b},内置函数。

              math.pow(a,b):即 a^{b} 。

             operator.pow(a,b):即 a^{b}

             math.sqrt(num):num的平方根,即\sqrt{num}

补充:pow(a,b):指数为浮点数,则结果为浮点数;指数为整数,则结果为整数。且结果是近似值。

math.pow(a,b):结果都是浮点数,且结果是精确浮点数。

operator.pow(a,b):与内置运算符对应的高效率函数。结果同pow(a,b)一致。

class Solution:def isPerfectSquare(self, num: int) -> bool:return float.is_integer(pow(num,0.5))# 或者import mathreturn float.is_integer(math.pow(num,0.5))# 或者import operatorreturn float.is_integer(operator.pow(num,0.5))# 或者import mathreturn math.sqrt(num).is_integer()

2、解题思路:从1开始,依次判断其平方是否等于num。若其平方大于num,则不满足。

class Solution:def isPerfectSquare(self, num: int) -> bool:i = 1square = 1while square <= num:if square == num:return Truei += 1square = i * ireturn False# 或者i = 1while i * i < num:i += 1return i * i == num

3、解题思路:二分查找。取1到num的中间值,若中间值的平方等于num,返回True。若中间值的平方小于num,则中间值开始的后半部分作为查找区间;若中间值的平方大于num,则从中间值的前半部分作为查找区间;再次取查找区间的中间值,比较其平方是否等于num。

class Solution:def isPerfectSquare(self, num: int) -> bool:left, right = 0, numwhile left <= right:mid = left + (right-left) // 2square = mid * midif square < num:left =  mid + 1elif square > num:right =  mid - 1elif square == num:return Truereturn False

4、解题思路:牛顿迭代法。

牛顿迭代法:一种在实数域和复数域上近似求解方程的方法。其本质是借助泰勒级数,从初始值开始快速向函数零点逼近,即 使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)=0的根。广泛用于计算机编程。需注意:确定迭代值,迭代关系式,结束迭代的条件。

泰勒级数:无限项连加式(级数)来表示一个函数,这些相加的项由函数在某一点的导数求得。在近似计算中有重要作用。

导数:函数的局部性质。函数在某一点的导数描述了该函数在这一点附近的变化率。若函数的自变量和取值都是实数,函数在某一点的导数就是函数曲线上这一点的切线斜率。

斜率:一条直线(或曲线的切线)对于(横)坐标轴倾斜程度的量。若直线垂直于x轴,斜率不存在或称斜率无穷大;若直线平行于x轴,斜率为0;其余,直线y=kx+b,则斜率k=tan\alpha =\frac{y1-y2}{x1-x2}=\frac{y2-y1}{x2-x1}

求导:微积分的基础。对函数求导,用f'\left ( x \right )表示。可导的函数一定连续,连续的函数不一定可导。

详解:① 若num是完全平方数,则x^{2}=num,因此 方程 y=f(x)=x^{2}-num初始迭代值为x_{0},则 y_{0}=x_{0}^{2}-num

② 对f(x)求导(导数公式:{\left (x^{n} \right )}'=nx^{n-1}{\left ( C \right )}'=0其中C为常数):f'(x)=2x。

③ 过当前迭代值(x_{i},y_{i})做一条斜率为该点导数的直线。即斜率 k=2x_{i}=\frac{y-y_{_{i}}}{x-x_{i}} ,该直线为 y=2x_{i}x-x_{i}^{2}-num

④ 该直线与横轴的交点为 (\frac{x_{i}^{2}+num}{2x_{i}},0),横坐标为x_{i+1}=\frac{1}{2}\left ( x_{i}+\frac{num}{x_{i}} \right )即下一个迭代值,根据方程计算出 y_{i+1}=x_{i+1}^{2}-num

⑤ 重复③ ④ 依次迭代下去,若两次迭代值之间的差值小于极小的非负数\epsilon(一般10^{-6}或者10^{-7}),则近似的获得结果。

注解:近似求解。初始迭代值为num,迭代关系式为(x0+num/x0)/2,终止迭代条件为x0-x1<1e-6。

class Solution:def isPerfectSquare(self, num: int) -> bool:x0 = numwhile True:x1 = (x0 + num / x0) / 2if x0 - x1 < 1e-6:breakx0 = x1x0 = int(x0)return x0 * x0 == num

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/204307.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SpringCloud】微服务的扩展性及其与 SOA 的区别

一、微服务的扩展性 由上一篇文章&#xff08;没看过的可点击传送阅读&#xff09;可知&#xff0c; 微服务具有极强的可扩展性&#xff0c;这些扩展性包含以下几个方面&#xff1a; 性能可扩展&#xff1a;性能无法完全实现线性扩展&#xff0c;但要尽量使用具有并发性和异步…

【Intel FPGA】D5005 使用笔记

项目总目标&#xff0c;在AFU中实现xx算法DDR 1.FPGA device &#xff1a;1SX280HN2F43E2VG 2 .硬件架构图 3.DDR信息 4.FIM &#xff08;FPAG Interface Manager&#xff09; The FIM contains the FPGA logic to support the accelerators, including the PCIe IP core, …

UDS 相关时间参数

文章目录 UDS 全部时间参数UDS 应用层诊断时间参数1、P2 Client P2 Server P2* Client P2* Server 图例2、S3 Client S3 Server 图例 UDS CNA-TP网络层时间参数1、N_As/N_Ar 图例2、N_Bs 图例3、 N_Br 图例4、N_Cs 图例N_Cr 图例 UDS 网络层流控制时间参数 UDS 全部时间参数 UD…

Java17(LTS Long Term Support)特性

支持JDK17的主流技术框架 spring framework 6.xspringboot 3.xkafka 3.0(不在支持jdk8)jenkins 2.357&#xff08;必须jdk11起步&#xff09;James Gosling表示赶紧弃用Java8&#xff0c;使用性能最好的JDK17Chart GPT也推荐JDK17&#xff0c;从长期到性能来说。 JDK17的特性 …

【古月居《ros入门21讲》学习笔记】15_ROS中的坐标系管理系统

目录 说明&#xff1a; 1. 机器人中的坐标变换 tf功能包能干什么&#xff1f; tf坐标变换如何实现 2. 小海龟跟随实验 安装 ros-melodic-turtle-tf 实验命令 运行效果 说明&#xff1a; 1. 本系列学习笔记基于B站&#xff1a;古月居《ROS入门21讲》课程&#xff0c;且使…

数据治理框架和成熟度模型

数据治理成熟度模型 一个企业的数据治理能力越高&#xff0c;所享受到数据治理带来的价值也会越多&#xff0c;如增加收入、减少成本、降低风险等。于是&#xff0c;很多企业想要准确地评估本公司的数据治理能力&#xff0c;可以利用数据治理成熟度模型方法&#xff0c;包括 D…

求和(打表题)

题目 打个表发现当 n 时答案为 p &#xff0c;否则为 1 &#xff0c;然后套板子。 #include <iostream> #include <algorithm> #include <vector> #include <cstring> #include <cmath>using namespace std;#define int long long using i64 …

直线(蓝桥杯)

直线 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 在平面直角坐标系中&#xff0c;两点可以确定一条直线。如果有多点在一条直线上&#xff0c; 那么这些点中任意两点确定的直线是同一条。 给定平面上 2 3 个…

万字解析设计模式之模板方法与解释器模式

一、模板方法模式 1.1概述 定义一个操作中算法的框架&#xff0c;而将一些步骤延迟到子类中&#xff0c;模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 例如&#xff0c;去银行办理业务一般要经过以下4个流程&#xff1a;取号、排队、办理具体业…

戴尔科技推出全新96核Precision 7875塔式工作站

工作站行业一直是快节奏且充满惊喜的。在过去25年中,戴尔Precision一直处于行业前沿,帮助创作者、工程师、建筑师、研究人员等将想法变为现实,并对整个世界产生影响。工作站所发挥的作用至关重要,被视为化不可能为可能的必要工具。如今,人工智能(AI)和生成式AI(GenAI)的浪潮正在…

【JavaEE初阶】认识线程、创建线程

1. 认识线程&#xff08;Thread&#xff09; 1.1 概念 1) 线程是什么 一个线程就是一个 "执行流". 每个线程之间都可以按照顺序执行自己的代码. 多个线程之间 "同时" 执行着多份代码. 举例&#xff1a; 还是回到我们之前的银⾏的例⼦中。之前我们主要描…

业务逻辑漏洞

业务逻辑漏洞 扫描器扫不出来 漏洞包括 暴力破解任意用户/密码登陆短信/邮箱轰炸验证码绕过/爆破/重放/回传用户名/手机号枚举(用户名枚举&#xff1a;当用户登录时&#xff0c;显示用户名不存在&#xff0c;或密码不正确&#xff0c;两个其中一个不正确就称为用户名枚举)越…

Python中的datetime库

1. datetime datetime是Python中用于处理日期和时间的类&#xff0c;它包含在datetime模块中。使用datetime类&#xff0c;我们可以创建表示特定日期和时间的对象&#xff0c;以及进行日期和时间的计算和操作。 from datetime import datetime, timedelta# 获取当前日期和时间…

20 章 多线程

20.1线程简介. 20.2创建线程 2.1继承Thread类 Thread 类是java.lang包中的一个类&#xff0c;从这个类中实例化的对象代表线程&#xff0c;程序员启动一个新线程需要建立Thread 实例。Thread类中常用的两个构造方法如下: public Thread():创建一个新的线程对象。 public Thre…

用C++和python混合编写数据采集程序?

之前看过一篇文章&#xff0c;主要阐述的就是多种语言混合编写爬虫程序&#xff0c;结合各种语言自身优势写一个爬虫代码是否行得通&#xff1f;觉得挺有意思的&#xff0c;带着这样的问题&#xff0c;我尝试着利用我毕生所学写了一段C和python混合爬虫程序&#xff0c;目前运行…

LeetCode Hot100 84.柱状图中最大的矩形

题目&#xff1a; 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 方法&#xff1a; 代码&#xff1a; class Solution {public int largestRectang…

成为AI产品经理——模型评估概述

目录 一、模型宣讲和评估的原因 二、模型宣讲 三、模型评估 1. 重要特征 ① 特征来源 ②特征意义 2.选择测试样本 3.模型性能和稳定性 一、模型宣讲和评估的原因 刘海丰老师提到他们在做一个金融AI产品未注重模型指标&#xff0c;过于注重业务指标&#xff0c;导致产生…

Python小知识

个人学习笔记&#xff0c;用于记录使用过程中好用的技巧、好用的库。 1 小知识 1.1 相对路径 1.2 打包Exe文件 命令&#xff1a; pyinstaller -F main.py其中-F&#xff1a;覆盖之前打包的文件 mian.py&#xff1a;需要打包的Python文件 PS&#xff1a;使用pyinstaller 5.1…

Docker,从入门到精通

1、DockerFile 介绍 dockerfile 是啥?dockerfile 用来构建 docker 镜像的文件。 具体步骤&#xff1a; 1、编写一个 dockerfile 文件 2、docker build 构造一个镜像 3、docker run 运行镜像 4、docker push 发布镜像 DockerFile 构建过程 1、每个保留关键字都必须是大…

人工智能-优化算法之凸集

凸性 凸性&#xff08;convexity&#xff09;在优化算法的设计中起到至关重要的作用&#xff0c; 这主要是由于在这种情况下对算法进行分析和测试要容易。 换言之&#xff0c;如果算法在凸性条件设定下的效果很差&#xff0c; 那通常我们很难在其他条件下看到好的结果。 此外&…