一:解题思路
我们之前做个一道题,在一个有序数组中,求和为定值的两个数。当时是采用类似二分搜索的方法来做的。同样这道题目也可以采用类似的方法来做,让两个游标i=0,j=(int)根号c,然后利用二分的思想来做。
二:完整代码示例 (C++版和Java版)
C++:
class Solution { public: bool judgeSquareSum(int c) { int i = 0, j = (int)sqrt(c); while (i<=j) { long sum = (i * i + (long)(j * j)); if (sum == c) { return true; } else if (sum < c) { i++; } else { j--; } } return false; } };
Java:
class Solution { public boolean judgeSquareSum(int c) { int i=0,j=(int)Math.sqrt(c); while(i<=j) { int sum=i*i+j*j; if(sum==c) { return true; } else if(sum<c) { i++; } else { j--; } } return false; } }
原文:https://www.cnblogs.com/repinkply/p/12621995.html