平方数之和
题目描述:
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。
输入输出样例
输入:c = 5
输出:true
解释:1 * 1 + 2 * 2 = 5
题解:
本题为简单题,类似于之前做过的两数之和的题。同样是运用双指针同时从两段向中间循环遍历求值。唯一要注意的一点是理解为何采用该方法不会少判。可以通过双指针的本质或者类比成二维数组判断查找来思考;参考教程:LeetCode精品题解
具体代码
#include <iostream>
#include <cstring>
#include <algorithm>
#include <math.h>
#include <vector>
using namespace std;
class L663 {
public:
bool judgeSquareSum(int c) {
int low = 0;
int high = sqrt(c);
while (low <= high) {
int sum = low * low + high * high;
if (sum == c) {
return true;
}
else if (sum < c) {
low++;
}
else if (sum > c) {
high--;
}
}
return false;
}
};