day47—双指针-平方数之和(LeetCode-633)

题目描述

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

示例 1:

复制代码
输入:c = 5
输出:true
解释:1 * 1 + 2 * 2 = 5

示例 2:

复制代码
输入:c = 3
输出:false

提示:

  • 0 <= c <= 2^31 - 1

解决方案:

1、数据大小范围:long long,(int 的极限是2^32 -1)

2、平方数就先取该数的算术平方根,分别讨论边界条件

3、算术平方根即是边界极值,另一值从0或1 开始,根据符合条件的大小比较,去压缩中间区域:即极值的左移或右移。

函数源码:

cpp 复制代码
class Solution {
public:
    bool judgeSquareSum(int c) {
        
        long long a=1;
        long long b=sqrt(c);
        double x=sqrt(c);
        
        if(x==b)     return true;

        while(true){
            if(a>b) return false;

            if(a*a+b*b==c)       break;
            else if(a*a+b*b>c)   b--;
            else                 a++;

        }
        
        return true;

    }
};
相关推荐
(Charon)3 小时前
【C++面试】迭代器失效是什么?vector、list、map中如何避免迭代器失效
c++·算法·面试
圣保罗的大教堂4 小时前
leetcode 3302. 字典序最小的合法序列 中等
leetcode
驭渊的小故事4 小时前
NC229023 题解:二分答案求解“最大化最小值“问题
java·算法
朝朝辞暮i4 小时前
C++ 第 36 课:Action——机械臂/VLA 非常重要
开发语言·c++·算法·ros2
ra90fy4 小时前
B3873 [GESP202309 六级] 小杨买饮料
c++·算法
Omics Pro5 小时前
北理工李荣华:AI虚拟细胞证据多模态推理基准
数据库·人工智能·算法·机器学习·自然语言处理
Cccp.1235 小时前
【leetcode】(九)哈希函数与哈希表
数据结构·leetcode·哈希算法
xieliyu.5 小时前
LeetCode 1419 数青蛙:状态模拟求最少青蛙数量|Java 题解
java·算法·leetcode
acd120095 小时前
线上偶发 499 错误,并非后端服务异常
算法
Nil2085 小时前
leetcode 45跳跃游戏Ⅱ
算法·leetcode·游戏