【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.mzph.cn/news/179119.shtml

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

相关文章

2020年4月20日 Go生态洞察:2019年Go开发者调查结果

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

springcloud进销存管理系统源码

开发说明&#xff1a; jdk1.8&#xff0c;mysql5.7&#xff0c;idea&#xff0c;vscode springcloud springboot mybatis vue elementui 功能介绍&#xff1a; 后台管理&#xff1a; 统计分析&#xff1a;查看产品&#xff0c;采购&#xff0c;销售数量&#xff1b;统计近…

入门必读:Figma软件的功能和用途一览!

1、Figma软件是做什么的 Figma软件奠定了在线设计工具的形式&#xff0c;产品UI设计功能非常强大&#xff0c;Figma软件基于web操作&#xff0c;无论是macos、windows可以使用这个软件&#xff0c;即使有电脑、浏览器、网络&#xff0c;甚至软件也不需要下载&#xff0c;节省了…

Zotero | 取消翻译后自动添加笔记

目录 Step1&#xff1a;点击 “编辑” << “首选项” Step2&#xff1a;“翻译” << 取消勾选 “自动翻译批注” 在 Zetoro 中&#xff0c;选择颜色标记勾画的内容&#xff0c;将会自动生成一条笔记&#xff0c;如下图所示&#xff1a; 本人觉得很鸡肋&#xff0…

【javaScript面试题】2023前端最新版javaScript模块,高频24问

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;博主收集的关于javaScript的面试题 目录 一、2023javaScript面试题精选 1.js的数据类型…

MindStudio学习记录三:推理应用开发 acl mindx sdk

1.推理应用流程 1.1.创建工程 1.2.模型转换 1.3代码开发 1.3.1ACL代码 1.3.2MindX SDK开发 可视化模块化设计 中间的图片与处理 是基于AIPP的可视化处理 1.5.编译 交叉编译 1.6.运行与调试 1.7 调优工具 profiling性能分析 2.开发举例 resnet-50 2.1 准备工程 2.2.准备模型…

10分钟快速入门UI自动化-Puppeteer

这次带大家入门的是转转内部实现UI自动化测试的一种方案&#xff1a; PuppeteerMocha 目前应用于转转图书、奢侈品、商业等业务等多个Web/H5业务的线上流程监控&#xff1b; 先简单介绍一下&#xff1a; Mocha 是JavaScript的一种单元测试框架 Puppeteer 是一个 Node 库&…

相关性分析和作图

相关的类型 1. Pearson、Spearman和Kendall相关 Pearson 积差相关系数衡量了两个定量变量之间的线性相关程度。&#xff08;连续&#xff09; Spearman等级相关系数则衡量分级定序变量之间的相关程度。&#xff08;分类&#xff09; Kendall’s Tau 相关系数也是一种非参数的…

C语言--不创建第三个变量,实现对两个数字的交换

我们先来看一下&#xff0c;创建临时变量交换两个数字。 #include<stdio.h> {int a2;int b3;int tmp0;printf("before:a%d b%d\n",a,b);tmpa;ab;btmp;printf("after:a%d b%d\n",a,b);return 0; } 图解&#xff1a; 运行结果&#xff1a; 再看一下不…

第二十章(多线程)

一.线程的简介 Windows操作系统是多任务操作系统&#xff0c;它以进程为单位。一个进程是一个包含有自身地址的程序&#xff0c;每个独立执行的程序都称为进程。也就是说每个正在执行的程序都是一个进程。系统可以分配给每一个进程有一段有限的使用CPU的时间&#xff08;也可以…

Gossip协议理解

概述 Gossip协议&#xff0c;又称epidemic协议&#xff0c;基于流行病传播方式的节点或进程之间信息交换的协议&#xff0c;在分布式系统中被广泛使用。 在1987年8月由施乐-帕洛阿尔托研究中心发表ACM上的论文《Epidemic Algorithms for Replicated Database Maintenance》中…

与 PCIe 相比,CXL为何低延迟高带宽?

文章目录 前言1. LatencyPCIE 生产者消费则模型结论Flit 包PCIE/CXL.ioCXL.cace & .mem总结 2. BandWidth常见开销CXL.IO Link efficiencyPCIe Link efficiencyCXL.IO bandwidthCXL.mem/.cache bandwidth 参考 前言 CXL 规范里没有具体描述与PCIe 相比低延时高带宽的原因&…

FreeRTOS学习之路,以STM32F103C8T6为实验MCU(2-10:低功耗 Tickless 模式)

学习之路主要为FreeRTOS操作系统在STM32F103&#xff08;STM32F103C8T6&#xff09;上的运用&#xff0c;采用的是标准库编程的方式&#xff0c;使用的IDE为KEIL5。 注意&#xff01;&#xff01;&#xff01;本学习之路可以通过购买STM32最小系统板以及部分配件的方式进行学习…

因为计算机中丢失MSVCP140.dll,无法启动此程序运行软件的解决方法

msvcp140.dll重新安装五个解决方法与msvcp140.dll文件的作用和丢失对电脑的影响介绍 正文&#xff1a; 在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中最常见的就是“缺少xxx.dll文件”。而msvcp140.dll就是其中之一。那么&#xff0c;msvcp140.…

(三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言Q1&#xff1a;卷积网络和传统网络的区别Q2:卷积神经网络的架构Q3:卷积神经网络中的参数共享&#xff0c;也是比传统网络的优势所在4、 具体的实现代码网络搭建…

Linux Nmap命令解析(Nmap指令)(功能:主机发现、ping扫描、arp扫描、端口扫描、服务版本检测、操作系统识别等)

文章目录 Linux Nmap 命令解析简介Nmap 的核心功能主机发现端口扫描服务版本检测OS 指纹识别&#xff08;操作系统指纹识别&#xff09;脚本扫描 安装 NmapNmap 命令结构Nmap 命令文档英文中文 主机发现Ping 扫描ARP 扫描关于nmap -PR&#xff08;ARP Ping Scan&#xff09;和n…

CentOS7.9虚拟机EDA环境,支持模拟集成电路、数字集成电路、数模混合设计全流程,包含工艺库

目录 前言一、配置准备工作1.1 网盘文件说明1.2 EDA工具介绍 二、虚拟机运行2.1 虚拟机工具启动2.2 软件配置使用2.3 Module工具切换环境变量和软件版本 获取方法附录&#xff1a;部分EDA工具运行效果图 前言 搭建了CentOS7.9虚拟机环境&#xff0c;工具包括但不限于&#xff…

json处理由fastjson换jackjson

fastjson没有jackjson稳定&#xff0c;所以换成jackjson来处理对象转json和json转对象问题。 首先下载jackjson包&#xff0c;三个都要引用 然后修改实现类 package JRT.Core.Util;import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.ja…

安防视频监控汇聚EasyNVR视频集中存储平台级联上级时下级未回复原因是什么?该如何解决?

安防监控系统EasyNVR视频云存储平台可实现设备接入、实时直播、录像、检索与回放、视频云存储、视频分发等视频能力服务&#xff0c;可覆盖全终端平台&#xff08;pc、手机、平板等终端&#xff09;&#xff0c;在智慧工厂、智慧工地、智慧社区、智慧校园等场景中有大量落地应用…