leetcode-双指针-633. 平方数之和
我的第一直觉是hashmap,可能受两数之和的影响
class Solution { public: bool judgeSquareSum(int c) { unordered_map<int, int> un_map; double n = sqrt(c); for(int i = 0; i <= n; i++){ //cout<<"n:"<<un_map[i*i]<<endl; un_map[i*i] = i; if((c-i*i)==0) return true; if(un_map[c-i*i]>0) return true; } return false; } };
但是双指针也是可以的
class Solution { public: bool judgeSquareSum(int c) { long left = 0; long right = (int)sqrt(c); while (left <= right) { long sum = left * left + right * right; if (sum == c) { return true; } else if (sum > c) { right--; } else { left++; } } return false; } };