LeetCode 633平方数之和

前言

最近打算集中一段时间刷刷题,但是手头的事情还没做完,于是先简单的找几个题来练练手,毕竟一个月左右没有刷题了,可能有些都遗忘了。

题意

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

示例1:

输入: 5
输出: True
解释: 1 * 1 + 2 * 2 = 5

示例2:

输入: 3
输出: False

解法

这道题解法有很多,还有很少有人知道的费马平方和定理,我们就用最简单的方式:

/**
 * @param {number} c
 * @return {boolean}
 */
var judgeSquareSum = function(c) {
    let xmin = Math.sqrt(0.5*c)
    for (a=0;a<=xmin;a++){
        if (Math.sqrt(c-a**2)%1===0) {
            return true
        }
    }
    return false
};

这个xmin确定的方式是用圆的方程来确定的,八分之一个圆弧。

发布了346 篇原创文章 · 获赞 330 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43870742/article/details/103911774