p72 两个完全平方数的和(leetcode633)

一:解题思路

我们之前做个一道题,在一个有序数组中,求和为定值的两个数。当时是采用类似二分搜索的方法来做的。同样这道题目也可以采用类似的方法来做,让两个游标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;
        }
    }

 

posted @ 2020-04-02 18:07  repinkply  阅读(255)  评论(0)    收藏  举报