平方数之和(No.633)

题目:平方数之和

给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a 的平方加 b 的平方等于 c 。

示例:

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

输入: 3
输出: False

思考:

这题因为 a * a + b * b = c,所以 a < 根号c,b < 根号c。
所以可以用两个变量i = 0,j = 根号c,
当 i <= j 时,计算i * i + j * j 
当结果小于c则i++,否则j--,
若结果等于c则返回true。

实现:

 class Solution {
    public boolean judgeSquareSum(int c) {
        int i = 0;
        int j = (int) Math.sqrt(c);
        while (i <= j) {
            int num = i * i + j * j;
            if (num == c) {
                return true;
            }
            if (num < c) {
                i++;
            } else {
                j--;
            }
        }
        return false;
    }
}

 本文转载自(https://juejin.im/post/5d063d4ae51d4550a629b275)  

找到所有数组中消失的数字(No.448)
跳跃表原理