LeetCode-633. 平方数之和

server/2025/2/21 5:15:33/

1、题目描述

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

示例 1:

输入:c = 5
输出:true
解释:1 * 1 + 2 * 2 = 5

示例 2:

输入:c = 3
输出:false

提示:

  • 0 <= c <= 231 - 1

 2、代码:

class Solution {
public:bool judgeSquareSum(int c) {// 定义两个指针 a 和 b// a 从 0 开始,b 从 sqrt(c) 开始long a = 0; // 使用 long 防止溢出long b = static_cast<long>(sqrt(c)); // b 初始化为 c 的平方根// 双指针法:a 从左向右移动,b 从右向左移动while (a <= b) {// 计算当前 a^2 + b^2 的值auto sum = a * a + b * b;if (sum > c) {// 如果 sum 大于 c,说明 b 的值太大了,需要减小 b--b;} else if (sum < c) {// 如果 sum 小于 c,说明 a 的值太小了,需要增大 a++a;} else {// 如果 sum 等于 c,找到了符合条件的 a 和 b,返回 truereturn true;}}// 如果循环结束仍未找到符合条件的 a 和 b,返回 falsereturn false;}
};

3、解题思路

  1. 数学性质

    • 如果存在两个整数 ab 满足 a^2 + b^2 = c,那么 ab 的平方值一定在 [0, c] 范围内。
    • 因此,我们可以通过枚举一个变量(如 a),并计算另一个变量(如 b)是否满足条件。
  2. 双指针法

    • 使用两个指针 ab,分别从 0sqrt(c) 开始移动。
    • 计算当前的平方和 sum = a^2 + b^2
      • 如果 sum == c,说明找到了符合条件的 ab,返回 true
      • 如果 sum < c,说明需要增大 a(即让 a++)。
      • 如果 sum > c,说明需要减小 b(即让 b--)。
    • a > b 时,结束循环,返回 false
  3. 时间复杂度

    • 由于 ab 分别从两端向中间移动,最多需要遍历 O(sqrt(c)) 次,因此时间复杂度为 O(sqrt(c))

http://www.ppmy.cn/server/169464.html

相关文章

Python基于Flask的豆瓣电影数据分析可视化系统(附源码,文档说明)

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

UDP

UDP 是什么&#xff1f; 提供无连接的&#xff0c;尽最大努力的数据传输服务&#xff08;不保证数据传输的可靠性&#xff09; UDP 的特点有哪些&#xff1f; 1&#xff09;UDP 是无连接的&#xff1b; 2&#xff09;UDP 使用尽最大努力交付&#xff0c;即不保证可靠交付&am…

芯麦GC4344立体声数模转换芯片深度解析:高精度音频与动态采样率技术

引言 在数字音频向高保真化、场景多元化发展的趋势下&#xff0c;数模转换器&#xff08;DAC&#xff09;的核心使命已不仅是简单的信号还原&#xff0c;而是需要在复杂环境中实现「自适应高精度」。芯半导体的GC4344正是这一理念的集大成者——它通过创新的四阶ΔΣ架构与智能…

【SQL】多表查询案例

&#x1f4e2;本章节主要学习使用SQL多表查询的案例,多表查询基础概念 请点击此处。 &#x1f384;数据准备 首先我们创建一个新的表也就是薪资等级表&#xff0c;其余两个表(员工表和薪资表)在多表查询章节中已经创建。然后我么根据这三个表完成下面的12个需求。 create tab…

【DL】浅谈深度学习中的知识蒸馏 | 输出层知识蒸馏

目录 一 核心概念与背景 二 输出层知识蒸馏 1 教师模型训练 2 软标签生成&#xff08;Soft Targets&#xff09; 3 学生模型训练 三 扩展 1 有效性分析 2 关键影响因素 3 变体 一 核心概念与背景 知识蒸馏&#xff08;Knowledge Distillation, KD&#xff09;是一种模…

亚信安全正式接入DeepSeek

亚信安全致力于“数据驱动、AI原生”战略&#xff0c;早在2024年5月&#xff0c;推出了“信立方”安全大模型、安全MaaS平台和一系列安全智能体&#xff0c;为网络安全运营、网络安全检测提供AI技术能力。自2024年12月DeepSeek-V3发布以来&#xff0c;亚信安全人工智能实验室利…

Qt QTabWidget 总结

Qt QTabWidget 总结 1. 基本概念 用途&#xff1a;管理多个标签页&#xff0c;每个页可包含独立内容&#xff0c;用户通过点击标签切换页面。组成&#xff1a; 标签栏&#xff08;QTabBar&#xff09;&#xff1a;显示标签标题、图标&#xff0c;支持交互&#xff08;点击、关…

【第15章:量子深度学习与未来趋势—15.1 量子计算基础与量子机器学习的发展背景】

想象一下,你正在用ChatGPT生成一篇小说,突然它卡在"主角穿越虫洞"的情节上——这不是因为想象力枯竭,而是传统计算机的晶体管已经烧到冒烟。当前AI大模型的参数规模每4个月翻一番,但摩尔定律的终结让经典计算机的算力增长首次跟不上AI的进化速度。这时候,量子计…