LeetCode 633. 平方数之和

简介: 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
• 1
• 2


示例 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;
    }
};
相关文章
|
6月前
|
机器学习/深度学习 算法
代码随想录Day02 数组基础2 leetcode T977有序数组的平方, T209 长度最小的子数组,T59 螺旋矩阵II
代码随想录Day02 数组基础2 leetcode T977有序数组的平方, T209 长度最小的子数组,T59 螺旋矩阵II
34 0
YI
|
9月前
|
Go
LeetCode 0977.有序数组的平方【Go】
LeetCode 0977.有序数组的平方【Go】
YI
51 0
|
5月前
|
算法
代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、209.长度最小的子数组、59. 螺旋矩阵 II
代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、209.长度最小的子数组、59. 螺旋矩阵 II
39 0
|
11月前
|
算法
LeetCode每日2道--有序数组的平方
LeetCode每日2道--有序数组的平方
49 0
|
算法 搜索推荐
LeetCode:977. 有序数组的平方
题目描述:给你一个按非递减顺序排序的整数数组 nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
leetcode 977 有序数组的平方
leetcode 977 有序数组的平方
62 0
leetcode 977 有序数组的平方
【LeetCode】移动零&&颜色分类&&有序数组的平方&&有效的山脉数组
【LeetCode】移动零&&颜色分类&&有序数组的平方&&有效的山脉数组
【LeetCode】移动零&&颜色分类&&有序数组的平方&&有效的山脉数组
|
算法
LeetCode 977. 有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
51 0
代码随想录刷题|LeetCode 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II
代码随想录刷题|LeetCode 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II