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; };

浙公网安备 33010602011771号