第一版,使用双指针,但是造成了溢出。

class Solution {public:bool judgeSquareSum(int c) {vector<int> arr(c+1);for(int i = 0;i < c+1;i++){arr[i] = i;}int l = 0;int r = c;while(l <= r){unsigned long long int num = arr[l] * arr[l] + arr[r] * arr[r];if(num == c){return true;}else if(num > c){r--;}else {l++;}}return false;}
};

主要是需要使用sqrt 来防止溢出和降低时间复杂度。

第二版,依然会溢出。
Line 11: Char 43: runtime error: signed integer overflow: 829921 + 2146654224 cannot be represented in type ‘int’ (solution.cpp)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior prog_joined.cpp:20:43

class Solution {public:bool judgeSquareSum(int c) {int a = sqrt(c);vector<int> arr(a+1);for(int i = 0;i < arr.size();i++){arr[i] = i;}int l = 0,r = a;while(l <= r){long long num = arr[l]*arr[l] + arr[r]*arr[r];if(num == c){return true;}else if(num > c){r--;}else{l++;}}return false;}
};

第三版,将数组换成了long

class Solution {public:bool judgeSquareSum(int c) {long a = sqrt(c);vector<long> arr(a+1);for(int i = 0;i < arr.size();i++){arr[i] = i;}int l = 0,r = a;while(l <= r){long long num = arr[l]*arr[l] + arr[r]*arr[r];if(num == c){return true;}else if(num > c){r--;}else{l++;}}return false;}
};

看了下官方答案,发现没有必要使用数组

class Solution {public:bool judgeSquareSum(int c) {long left = 0;long right = (int)sqrt(c);while (left <= right) {long sum = left * left + right * right;if (sum == c) {return true;} else if (sum > c) {right--;} else {left++;}}return false;}
};作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/sum-of-square-numbers/solution/ping-fang-shu-zhi-he-by-leetcode-solutio-8ydl/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2022-4-16 Leetcode 633.平方数之和相关推荐

  1. LeetCode 633 平方数之和

    题目描述 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c . 题解 和两数之和那道题目的求解方式类似,需要注意整数的溢出. 代码 class Solutio ...

  2. leetcode 633. 平方数之和(双指针)

    给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c . 示例 1: 输入:c = 5 输出:true 解释:1 * 1 + 2 * 2 = 5 示例 2: 输入 ...

  3. C#刷遍Leetcode面试题系列连载(4): No.633 - 平方数之和

    点击蓝字"dotNET匠人"关注我哟 加个"星标★",每日 7:15,好文必达! 前文传送门: 上篇文章中一道数学问题 - 自除数,今天我们接着分析 LeetC ...

  4. 167. 两数之和 II - 输入有序数组633. 平方数之和

    167. 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列  ,请你从数组中找出满足相加之和等于目标数 target 的两个数.如果设这两个数分别是 numbers[i ...

  5. 633.平方数之和(Sum of Square Numbers)

    题目描述 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c. 示例1: 输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5 示例2: 输 ...

  6. Java 找平方数之和的奇数

    题目描述 读入一个正整数n(n>10),找出10~n内所有可以表示为两个平方数之和的奇数,并输出这些数(按从小到大的顺序)和它们的平方(小的在前.大的在后)表示,如n=30时,程序运行输出: 1 ...

  7. [leetcode]1.两数之和

    [leetcode]1.两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应 ...

  8. [双指针|模拟] leetcode 15 三数之和

    [双指针|模拟] leetcode 15 三数之和 1.题目 题目链接 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ? ...

  9. [hashmap|空间换时间] leetcode 1 两数之和

    [hashmap|空间换时间] leetcode 1 两数之和 1.题目 题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下 ...

最新文章

  1. bzoj 3743 [Coci2015]Kamp——树形dp+换根
  2. 【行业】点餐App未来必须面对的三大难题
  3. Xcode4.5编译ffmpeg成功,过程说明
  4. 聊一聊Docker与时区
  5. 张队长主讲这堂 .NET Core技术培训公开课,太原你约不约
  6. 语音自动识别文字软件
  7. JavaScript语言概况(一)
  8. Apache创建虚拟目录绑定域名
  9. steam加速_Apex英雄Steam版锁60帧 GoLink免费加速器助力畅快_综合资讯
  10. c语言程序设计在未来前景,转型背景下C程序设计课程的实施方案
  11. CLodop云打印服务(localhost本地)未安装启动
  12. 电脑版微信打开内置浏览器
  13. 神州数码云平台基础环境搭建
  14. 放大电路中反馈及类型的判断
  15. 【IDE】Intellij IDEA启动正常,但是任务栏不显示图标
  16. 为什么我的iPhone上的某些iMessages绿色和某些蓝色?
  17. 网页yy语音(歪歪语音) 网页版
  18. php的pdo mysql扩展模块_php pdo链接
  19. 两个计算机怎么共享一台打印机共享,多台电脑怎样共享一台打印机?这两个设备完美实现!...
  20. 实例:下载所有XKCD漫画

热门文章

  1. 结合我的大学经历谈谈如何学习前端
  2. Android使用lame将PCM文件转码为MP3文件
  3. GX Works2、MX OPC 6.04以及组态王6.55联合模拟仿真
  4. 【BZOJ2400】Optimal Marks
  5. uniapp打包为H5后怎样在本地运行
  6. 解决U盘中毒文件被隐藏
  7. 基于Python的Opencv 自动识别银行卡卡号系统
  8. Android加载自定义字体出错,Android设置自定义字体的解决方案
  9. 《project之支持学生随时来考试》
  10. 使用python生成曲线图