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题解)相关推荐

  1. LeetCode 633 平方数之和

    题目描述 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c . 题解 和两数之和那道题目的求解方式类似,需要注意整数的溢出. 代码 class Solutio ...

  2. 2022-4-16 Leetcode 633.平方数之和

    第一版,使用双指针,但是造成了溢出. class Solution {public:bool judgeSquareSum(int c) {vector<int> arr(c+1);for ...

  3. leetcode 633. 平方数之和(双指针)

    给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c . 示例 1: 输入:c = 5 输出:true 解释:1 * 1 + 2 * 2 = 5 示例 2: 输入 ...

  4. C#刷遍Leetcode面试题系列连载(4): No.633 - 平方数之和

    点击蓝字"dotNET匠人"关注我哟 加个"星标★",每日 7:15,好文必达! 前文传送门: 上篇文章中一道数学问题 - 自除数,今天我们接着分析 LeetC ...

  5. 167. 两数之和 II - 输入有序数组633. 平方数之和

    167. 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列  ,请你从数组中找出满足相加之和等于目标数 target 的两个数.如果设这两个数分别是 numbers[i ...

  6. 633.平方数之和(Sum of Square Numbers)

    题目描述 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c. 示例1: 输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5 示例2: 输 ...

  7. C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组

    C/C++描述 LeetCode 167. 两数之和 II - 输入有序数组   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在 ...

  8. LeetCode 1. 两数之和

    LeetCode 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入 ...

  9. Java 找平方数之和的奇数

    题目描述 读入一个正整数n(n>10),找出10~n内所有可以表示为两个平方数之和的奇数,并输出这些数(按从小到大的顺序)和它们的平方(小的在前.大的在后)表示,如n=30时,程序运行输出: 1 ...

  10. 牛客题霸 两数之和C++题解/答案

    牛客题霸 两数之和 C++题解/答案 题目描述 给出一个整数数组,请在数组中找出两个加起来等于目标值的数, 你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 ...

最新文章

  1. 线程间的通信 共享数据安全问题
  2. 用linux下常用命令wget进行整站下载(递归下载至本地)
  3. java ora-12505_Oracle SQL Developer连接报错(ORA-12505)的解决方案(两种)
  4. Ubuntu下apt-get方式Git的安装、配置和更新
  5. JavaScript返回语句
  6. Linux学习-07-vim编辑器
  7. 2、AbstractApplicationContext的refresh功能概述
  8. tensorflow python2迁移python3_tensorflow在python2和python3上的安装教程
  9. git pull push 项目的时候总是提示要输入用户名密码的解决方案
  10. 30岁中专自学java,19岁中专毕业 工作两年感觉就是混日子 想再去学个软件编程 我这个学历学他有前途吗?...
  11. ASP.NET----GridView控件设置超链接
  12. coreldraw铺花纹_详解CorelDRAW位图图样填充
  13. java 整型 二进制_Java中如何得到一个整型数的二进制形式(十进制转化成二进制)...
  14. 从产品模式到生活方式,苏宁小Biu车联网迈过了哪些坎?
  15. 组合导航(九):三维简化的INS/GPS组合导航系统
  16. 我理解的一点股票技术分析
  17. 保镖机器人作文_保镖小学生作文
  18. win7与VMware/VBox下linux共享文件夹方法
  19. linux的应用界面设计,技术|Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏
  20. STM32_3 时钟初始化分析

热门文章

  1. 面部捕捉技术_FT45面部表情捕捉系统--说明书(中文版)
  2. python列表替换_Python 列表元素替换
  3. A股各概念板块龙头股大全
  4. 再谈GPU-Driven Rendering Pipelines
  5. linux 下的rpm 和ivh各是什么意思
  6. 产品设计 - AARRR模型,增长和变现
  7. 利用Python自动生成小学生加减乘除口算考试题卷
  8. Python 实验二 tkinter 版小学数学口算题生成器设计与实现
  9. linux五笔输入法制作_在linux下制作拼音五笔输入法
  10. mp4的box信息——avcC,mdat