LeetCode每日刷题-633.平方数之和

来源:LeetCode

633.平方数之和

今天的每日一题也很快AC,跟写数学题一样逻辑出来了,照着逻辑写不难

题目

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

示例一:

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

示例二:

输入:c = 3
输出:false

首先我们搞清楚需要查找的是正整数,a的平方加上b的平方等于c,

c是题目给的随机非负整数,a和b都是整数,

那么就简单了,首先用a² <= c进行遍历寻找a,然后用b=√(c - a²)找到对应的b,

最后判断b是否为整数类型(int)

代码:

//Java方法
class Solution {
    public boolean judgeSquareSum(int c) {
    //遍历寻找a ,a的类型定义为long防止溢出
    for(long a=0; a*a <= c ;a++){
   //定义对应的b
        double b = Math.sqrt(c - a*a);
  //判断b是否为整数
        if(b==(int)b){
  //b为整数返回true
            return true;
        }
  //if判断后不接else返回false,为什么呢?
    }
  //循环内会不断查找b,在循环里面加上else返回false的话,每一个不为整数的b都会返回false将true覆盖,所以跳出循环返回false才能得到准确的结果
    return false;
    }
}
//JavaScript方法,基本逻辑与JAVA相同,不详细描述
/**
 * @param {number} c
 * @return {boolean}
 */
var judgeSquareSum = function(c) {
for(let i=0;i*i<=c;i++){
  const b = Math.sqrt(c - i * i);
  if(b === parseInt(b)){
  return true;
  }
}
  return false;
};

 

posted @ 2021-04-28 10:34  ❀Camelia  阅读(129)  评论(0)    收藏  举报