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

news2024/11/22 13:38:35

【力扣题】题目描述:

【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 math
        return float.is_integer(math.pow(num,0.5))
        # 或者
        import operator
        return float.is_integer(operator.pow(num,0.5))
        # 或者
        import math
        return math.sqrt(num).is_integer()

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

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

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

class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        left, right = 0, num
        while left <= right:
            mid = left + (right-left) // 2
            square = mid * mid
            if square < num:
                left =  mid + 1
            elif square > num:
                right =  mid - 1
            elif square == num:
                return True
        return 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 = num
        while True:
            x1 = (x0 + num / x0) / 2
            if x0 - x1 < 1e-6:
                break
            x0 = x1
        x0 = int(x0)
        return x0 * x0 == num

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

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

相关文章

婴儿专用洗衣机哪个牌子比较好?宝宝洗衣机推荐

对于宝妈来说有一款小型可以自动杀菌的洗衣机真的非常重要。我们日常生活中一般会把一些贴身衣物和较特殊的面料的衣物用于手洗&#xff0c;而手洗的过程会相对来说比较麻烦&#xff0c;而且还可能洗不干净&#xff0c;而传统的洗衣机采用了双缸式容易滋生霉菌&#xff0c;容易…

P8A012-A016组策略安全

账户策略 【预备知识】 组策略&#xff08;Group Policy&#xff09;是Microsoft Windows系统管理员为用户和计算机定义并控制程序、网络资源及操作系统行为的主要工具。通过使用组策略可以设置各种软件、计算机和用户策略。 【实验步骤】 网络拓扑&#xff1a;server2008A…

Python hashlib库解析:数据安全加密必备指南

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 哈希函数在计算机科学中扮演着重要的角色。它是一种能够将任意长度的数据转换成固定长度的唯一值的算法。Python提供了hashlib库&#xff0c;用于生成哈希摘要&#xff0c;提供了常见的哈希算法&#xff0c;如MD…

查看mysql 或SQL server 的连接数,mysql超时、最大连接数配置

1、mysql 的连接数 1.1、最大可连接数 show variables like max_connections; 1.2、运行中连接数 show status like Threads_connected; 1.3、配置最大连接数&#xff0c; mysql版本不同可配置的最大连接数不同&#xff0c;mysql8.0的版本默认151个连接数&#xff0c;…

超声波清洗机器哪个品牌好用?这四款都夸的超声波清洗机

超声波清洗是一种先进的清洗技术&#xff0c;它利用高频振动产生微小气泡来对物体进行清洗。这些微小气泡在物体表面不断振动&#xff0c;使得污垢和油脂被震碎并脱落。这种方法可以有效地去除眼镜上的污垢、油脂和细菌&#xff0c;从而提高眼镜的清洁度。与传统的清洗方法相比…

Vue2 若依框架头像上传 全部代码

<template><div><div class"user-info-head" click"editCropper()"><img v-bind:src"options.img" title"点击上传头像"class"img-circle img-lg" /></div><el-dialog :title"title&…

不同路径(力扣LeetCode)动态规划

不同路径 题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&…

VT-MSPA1-12-1X/V0直动式比例压力阀放大器

适用于控制不带电位移反馈的比例压力阀、比例流量阀、比例方向阀的控制;差动输入;1个脉冲输出端口;函数发生器;带斜坡时间可调的斜坡生器&#xff08;可上升和下降斜坡&#xff09;; 可调电流调节器;电源带错极保护;LED 电磁铁动作显示;&#xff08;LED 的亮度与流过电磁铁的电…

Zip压缩包密码如何取消?有密码?无密码?

Zip压缩包可以进行加密&#xff0c;相信大家都很了解&#xff0c;那么zip压缩包取消密码&#xff0c;大家了解多少呢&#xff1f;有密码的情况下&#xff0c;有哪些方法可以取消密码&#xff1f;无密码又该如何取消密码&#xff1f;今天将方法总结分享给大家。 最原始的方法&a…

【100个Cocos实例】完蛋,你看我在刮刮乐中刮到了什么?

引言 什么&#xff1f;还能刮出这个&#xff1f; 相信大家对刮刮乐都不陌生&#xff0c;昨天听到小伙伴说花了20买了张刮刮乐&#xff0c;结果刮中了20&#xff0c;白忙活一场。 假如我们要在Cocos游戏开发中实现刮刮乐效果&#xff0c;应该怎么做呢&#xff1f; 本文将介绍…

Angular的Ng-Zorro组件库通知提醒框知识点

目录 系列文章目录 一、在angular中引入通知提醒框服务 二、创建通知提醒框 提示&#xff1a;在实际操作中根据id移除通知提醒框的方法尚未熟悉&#xff0c;根据此文档进行巩固 一、在angular中引入通知提醒框服务 constructor(private notifition: NzNotificationService) {}…

pip 安装软件出现 [No space left on device]

问题&#xff1a; /home文件下空间满了&#xff0c;安装软件可能会出现这个问题 解决方法&#xff1a; pip install --no-cache-dir 安装包名

跨链原子交换

原子交换的想法于 2013 年首次在 BitcoinTalk 论坛上提出&#xff0c;它可以实现两个区块链之间的代币交换。 这些交换是原子的&#xff0c;因为双方要么收到对方的硬币&#xff0c;要么都保留自己的硬币。 一方不可能欺骗另一方。 它不依赖任何可信赖的第三方&#xff0c;消除…

TOD和PPS精确时间同步技术

介绍 PPS和TOD PPS和TOD是两种用于精确时间同步的技术&#xff0c;它们在许多领域都有广泛的应用&#xff0c;总的来说&#xff0c;PPS和TOD被广泛应用于各种需要高度精确时间同步的领域&#xff0c;包括通信、测量、测试、系统集成和计算机网络等。 一、PPS PPS&#xff08…

HCIP-十二、BGP常用属性

十二、BGP常用属性 实验拓扑实验需求及解法1.IP 地址已配置&#xff0c;自行测试直连。2.AS100 中运行 OSPF3.AS200 中运行 ISIS4.运行 BGP5.发布 BGP 路由6.修改起源属性 Origin7.修改 AS-path8.修改本地优先 Local-preference9.修改 MED 实验拓扑 实验需求及解法 本实验模拟…

java编程:数组代表着苹果期货在 9 天内的价格变化,其中第 n 个元素是苹果在第 n 天的 价格,你可以进行最多三次交易,设计算法,9 天内赚到最多的钱

1 题目 编程题&#xff1a;下面的数组代表着苹果期货在 9 天内的价格变化&#xff0c;其中第 n 个元素是苹果在第 n 天的 价格&#xff0c;你可以进行最多三次交易&#xff0c;设计一个算法&#xff0c;9 天内如何赚到最多的钱&#xff1f;价格数组&#xff1a; [8, 9, 2, 5, …

SSM训练营管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 训练营管理系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系 统主要采用B/S模…

【EasyExcel实践】导出多个sheet到多个excel文件,并压缩到一个zip文件

文章目录 前言正文一、项目依赖二、封装表格实体和Sheet实体2.1 表格实体2.2 Sheet实体 三、核心实现3.1 核心实现之导出为输出流3.2 web导出3.3 导出为字节数组 四、调试4.1 构建调试用的实体类4.2 控制器调用4.3 测试结果 五、注册大数转换器&#xff0c;长度大于15时&#x…

台灯哪种灯光对眼睛好?精选高品质的护眼台灯

近几年越来越多家长开始重视孩子的视力健康问题&#xff0c;要知道如今我国儿童青少年的近视率已经达到了52.7%&#xff0c;也就是说平均每十个儿童青少年中就有五个是存在视力问题的&#xff0c;而且近视的人群是越往高年级的学生占比越多。不过目前也发现了不少低年级的孩子出…

不要被各种专业术语吓倒

有一个东西&#xff0c;是如此奇妙&#xff0c;今天我们需要讲讲。 在不同的函数中&#xff0c;这个东西有着不同的名字&#xff0c;但实际它都是同一个东西。 例如&#xff0c; RegisterWaitForSingleObject 这个 API&#xff0c;它的原型如下&#xff1a; BOOL RegisterWai…