LeetCode 633. 平方数之和(双指针法)

633. 平方数之和

双指针法

class Solution
{
    
    
public:
    bool judgeSquareSum(int c)
    {
    
    
        long left = 0, right = sqrt(c);
        while (left <= right)
        {
    
    
            long tmp = left * left + right * right;
            if (tmp == c)
            {
    
    
                return true;
            }
            else if (tmp > c)
            {
    
    
                right--;
            }
            else
            {
    
    
                left++;
            }
        }
        return false;
    }
};

就是左右指针优化。要注意数据类型要为 l o n g long long​​,因为 a 2 + b 2 = c a^2+b^2=c a2+b2=c​​,所以 c ≥ a & & b c \ge a \&\& b ca&&b​​​,​所以可以优化右指针初始值

猜你喜欢

转载自blog.csdn.net/leoabcd12/article/details/120771823
今日推荐