leetcode.双指针.633平方数之和-Java
1. 具体题目
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a^2 + b^2 = c。
示例1: 输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5
注:a可以等于b
2. 思路分析
假设a < b,若存在结果值,那么 b 最大为 c 的平方根,a 此时为 0。所以设置双指针,初始化 low 为 0,high 为 c 的平方根,之后从两边逼近结果值,思路类似于leetcode167两数之和。
3. 代码
1 public boolean judgeSquareSum(int c) { 2 int l = 0, h = (int) Math.sqrt(c); 3 while(l <= h){ 4 int res = l * l + h * h; 5 if(res == c){ 6 return true; 7 }else if(res < c){ 8 l++; 9 }else{ 10 h--; 11 } 12 } 13 return false; 14 }

浙公网安备 33010602011771号