美文网首页
力扣每日一题:633.平方数之和

力扣每日一题:633.平方数之和

作者: 清风Python | 来源:发表于2021-04-28 23:47 被阅读0次

    633.平方数之和

    https://leetcode-cn.com/problems/sum-of-square-numbers/

    难度:中等

    题目:

    给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。

    提示:

    0 <= c <= 231 - 1

    示例:

    示例 1:
    
    输入:c = 5
    输出:true
    解释:1 * 1 + 2 * 2 = 5
    示例 2:
    
    输入:c = 3
    输出:false
    示例 3:
    
    输入:c = 4
    输出:true
    示例 4:
    
    输入:c = 2
    输出:true
    示例 5:
    
    输入:c = 1
    输出:true
    

    分析

    这道题感觉有些不符合中等题的难度,题目有些短所以理解上有些出入。

    描述C的时候专门说是非负整数,说a和b的时候又成了整数,但其实a b均可以为0。

    提供for循环调用sqrt 和 双指针两种解题,但本质上差别不大。

    解题:

    from math import sqrt
    
    class Solution:
        def judgeSquareSum(self, c: int) -> bool:
            r = int(sqrt(c))
            for num in range(r + 1):
                if sqrt(c - num ** 2) % 1 == 0:
                    return True
            return False
    
    class Solution:
        def judgeSquareSum(self, c):
            left = 0
            right = int(c ** 0.5) + 1
            while left <= right:
                total = left ** 2 + right ** 2
                if total == c:
                    return True
                elif total > c:
                    right -= 1
                else:
                    left += 1
            return False
    

    欢迎关注我的公众号: 清风Python,带你每日学习Python算法刷题的同时,了解更多python小知识。

    我的个人博客:https://qingfengpython.cn

    力扣解题合集:https://github.com/BreezePython/AlgorithmMarkdown

    相关文章

      网友评论

          本文标题:力扣每日一题:633.平方数之和

          本文链接:https://www.haomeiwen.com/subject/ppqirltx.html