LeetCode 633.平方数之和(python题解)
LeetCode 633.平方数之和(python题解)
- 题目
- 示例
- 分析
- 题解
- 用到的基础知识
- 计算平方和平方根
- 取整
- 参考
题目
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c
示例
输入: 5
输出: True
解释: 1 * 1 + 2 * 2 = 5
分析
本题与上一题 LeetCode 167. 两数之和 II 非常相似,把两数之和变成了平方数之和,利用上一题答案的思路,同样设置两个一左一右的指针,很容易就可以解答出来。这里要注意题目中b的取值范围,b的最大值应是c的平方根。
题解
class Solution:def judgeSquareSum(self, c: int) -> bool:sqrt = int(c ** 0.5)a = 0b = sqrtwhile a <= b:sum = a**2 + b**2if sum == c:return Trueelif sum < c:a += 1else:b -= 1return False
用到的基础知识
计算平方和平方根
1. 使用内置模块math
import mathmath.pow(4,2) 求4的平方math.sqrt(16) 求16的开平方
2. 使用表达式法
4 ** 2 计算4的平方16 ** 0.5 计算16的开平方
3. 使用内置函数
pow(4,2) 计算4的平方pow(16,0.5) 计算16的平方根
取整
1. 向下取整
向下取整直接用内建的 int() 函数:
>>> a = 3.75
>>> int(a)
3
2. 四舍五入
用 round() 函数:
>>> round(3.25); round(4.85)
3.0
5.0
用 math 模块中的 ceil() 方法:
3. 向上取整
用 math 模块中的 modf() 方法,该方法返回一个包含小数部分和整数部分的二元组:
>>> import math
>>> math.ceil(3.25)
4.0
>>> math.ceil(3.75)
4.0
>>> math.ceil(4.85)
5.0
4.分别取小数和整数部分
>>> import math
>>> math.modf(3.25)
(0.25, 3.0)
>>> math.modf(3.75)
(0.75, 3.0)
>>> math.modf(4.2)
(0.20000000000000018, 4.0)
参考
【1】CyC2018 Leetcode 题解 - 双指针
【2】python计算平方和平方根的方法
【3】Python 几种取整的方法
LeetCode 633.平方数之和(python题解)相关推荐
- LeetCode 633 平方数之和
题目描述 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c . 题解 和两数之和那道题目的求解方式类似,需要注意整数的溢出. 代码 class Solutio ...
- 2022-4-16 Leetcode 633.平方数之和
第一版,使用双指针,但是造成了溢出. class Solution {public:bool judgeSquareSum(int c) {vector<int> arr(c+1);for ...
- leetcode 633. 平方数之和(双指针)
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c . 示例 1: 输入:c = 5 输出:true 解释:1 * 1 + 2 * 2 = 5 示例 2: 输入 ...
- C#刷遍Leetcode面试题系列连载(4): No.633 - 平方数之和
点击蓝字"dotNET匠人"关注我哟 加个"星标★",每日 7:15,好文必达! 前文传送门: 上篇文章中一道数学问题 - 自除数,今天我们接着分析 LeetC ...
- 167. 两数之和 II - 输入有序数组633. 平方数之和
167. 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数.如果设这两个数分别是 numbers[i ...
- 633.平方数之和(Sum of Square Numbers)
题目描述 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c. 示例1: 输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5 示例2: 输 ...
- C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组
C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...
- LeetCode 1. 两数之和
LeetCode 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入 ...
- Java 找平方数之和的奇数
题目描述 读入一个正整数n(n>10),找出10~n内所有可以表示为两个平方数之和的奇数,并输出这些数(按从小到大的顺序)和它们的平方(小的在前.大的在后)表示,如n=30时,程序运行输出: 1 ...
- 牛客题霸 两数之和C++题解/答案
牛客题霸 两数之和 C++题解/答案 题目描述 给出一个整数数组,请在数组中找出两个加起来等于目标值的数, 你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 ...
最新文章
- 线程间的通信 共享数据安全问题
- 用linux下常用命令wget进行整站下载(递归下载至本地)
- java ora-12505_Oracle SQL Developer连接报错(ORA-12505)的解决方案(两种)
- Ubuntu下apt-get方式Git的安装、配置和更新
- JavaScript返回语句
- Linux学习-07-vim编辑器
- 2、AbstractApplicationContext的refresh功能概述
- tensorflow python2迁移python3_tensorflow在python2和python3上的安装教程
- git pull push 项目的时候总是提示要输入用户名密码的解决方案
- 30岁中专自学java,19岁中专毕业 工作两年感觉就是混日子 想再去学个软件编程 我这个学历学他有前途吗?...
- ASP.NET----GridView控件设置超链接
- coreldraw铺花纹_详解CorelDRAW位图图样填充
- java 整型 二进制_Java中如何得到一个整型数的二进制形式(十进制转化成二进制)...
- 从产品模式到生活方式,苏宁小Biu车联网迈过了哪些坎?
- 组合导航(九):三维简化的INS/GPS组合导航系统
- 我理解的一点股票技术分析
- 保镖机器人作文_保镖小学生作文
- win7与VMware/VBox下linux共享文件夹方法
- linux的应用界面设计,技术|Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏
- STM32_3 时钟初始化分析