633. 平方数之和

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

示例 1:

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

输入:c = 3
输出:false

提示:

0 <= c <= 231 - 1

解题思路:
1.平方根可以用java的Math.sqrt方法
2.两个数的平方和能否等于目标数

完整代码:
      class Solution {
          /**
           * 判断一个非负整数c是否可以表示为两个整数的平方和
           * 
           * @param c 需要判断的非负整数
           * @return 如果存在整数a和b,使得a^2 + b^2 = c,返回true;否则返回false
           */
          public boolean judgeSquareSum(int c) {
              // 从0开始遍历可能的整数a,直到a^2超过c为止
              for (long a = 0; a * a <= c; a++) {
                  // 根据勾股定理计算b的可能值
                  long b = (long) Math.sqrt(c - a * a);
                  // 检查当前的a和计算出的b是否满足条件
                  if (a * a + b * b == c) {
                      // 如果满足条件,即找到了a和b,使得a^2 + b^2 = c,返回true
                      return true;
                  }
              }
              // 如果遍历完所有可能的a后仍未找到满足条件的整数对,返回false
              return false;
          }
      }
posted @ 2024-11-04 09:24  JAVA-CHENG  阅读(52)  评论(0)    收藏  举报