打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
LeetCode 633. 平方数之和

633. 平方数之和

给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。

示例 1:

输入:c = 5
输出:true

解释:1 * 1 + 2 * 2 = 5

示例 2:

输入:c = 3
输出:false

示例 3:

输入:c = 4
输出:true

示例 4:

输入:c = 2
输出:true

示例 5:

输入:c = 1
输出:true

题解

右指针的初始化,实现剪枝,从而降低时间复杂度。设右指针为 x,左指针固定为 0,为了使 x的值尽可能接近 target,我们可以将 x 取为 sqrt(target)。

因为最多只需要遍历一次 0~sqrt(target),所以时间复杂度为 O(sqrt(target))。又因为只使用了两个额外的变量,因此空间复杂度为 O(1)。

链接:https://leetcode-cn.com/problems/sum-of-square-numbers/solution/shuang-zhi-zhen-jie-ti-by-simple-zd-hj34/

代码

class Solution {
public:
    bool judgeSquareSum(int c) {
        long l=0,r=sqrt(c);
        int sum=0;
        while(l<=r)
        {
            sum=l*l+r*r;
            if(sum==c)
                return true;
            else if(sum>c)
                r--;
            else
                l++;        
        }
        return false;
    }
};
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
LeetCode 633.平方数之和
LeetCode面试系列 第5天:No.204 - 统计质数
C#刷遍Leetcode面试题系列连载(4): No.633 - 平方数之和
LeetCode刷题实战9:求解回文数
【算法千题案例】每日LeetCode打卡——80.检测大写字母
算法复杂度分析
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服