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     }

 

posted @ 2019-11-25 20:06  les111ley  阅读(186)  评论(0)    收藏  举报