2022-4-16 Leetcode 633.平方数之和
第一版,使用双指针,但是造成了溢出。
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.平方数之和相关推荐
- LeetCode 633 平方数之和
题目描述 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c . 题解 和两数之和那道题目的求解方式类似,需要注意整数的溢出. 代码 class Solutio ...
- leetcode 633. 平方数之和(双指针)
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c . 示例 1: 输入:c = 5 输出:true 解释:1 * 1 + 2 * 2 = 5 示例 2: 输入 ...
- C#刷遍Leetcode面试题系列连载(4): No.633 - 平方数之和
点击蓝字"dotNET匠人"关注我哟 加个"星标★",每日 7:15,好文必达! 前文传送门: 上篇文章中一道数学问题 - 自除数,今天我们接着分析 LeetC ...
- 167. 两数之和 II - 输入有序数组633. 平方数之和
167. 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数.如果设这两个数分别是 numbers[i ...
- 633.平方数之和(Sum of Square Numbers)
题目描述 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c. 示例1: 输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5 示例2: 输 ...
- Java 找平方数之和的奇数
题目描述 读入一个正整数n(n>10),找出10~n内所有可以表示为两个平方数之和的奇数,并输出这些数(按从小到大的顺序)和它们的平方(小的在前.大的在后)表示,如n=30时,程序运行输出: 1 ...
- [leetcode]1.两数之和
[leetcode]1.两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应 ...
- [双指针|模拟] leetcode 15 三数之和
[双指针|模拟] leetcode 15 三数之和 1.题目 题目链接 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ? ...
- [hashmap|空间换时间] leetcode 1 两数之和
[hashmap|空间换时间] leetcode 1 两数之和 1.题目 题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下 ...
最新文章
- bzoj 3743 [Coci2015]Kamp——树形dp+换根
- 【行业】点餐App未来必须面对的三大难题
- Xcode4.5编译ffmpeg成功,过程说明
- 聊一聊Docker与时区
- 张队长主讲这堂 .NET Core技术培训公开课,太原你约不约
- 语音自动识别文字软件
- JavaScript语言概况(一)
- Apache创建虚拟目录绑定域名
- steam加速_Apex英雄Steam版锁60帧 GoLink免费加速器助力畅快_综合资讯
- c语言程序设计在未来前景,转型背景下C程序设计课程的实施方案
- CLodop云打印服务(localhost本地)未安装启动
- 电脑版微信打开内置浏览器
- 神州数码云平台基础环境搭建
- 放大电路中反馈及类型的判断
- 【IDE】Intellij IDEA启动正常,但是任务栏不显示图标
- 为什么我的iPhone上的某些iMessages绿色和某些蓝色?
- 网页yy语音(歪歪语音) 网页版
- php的pdo mysql扩展模块_php pdo链接
- 两个计算机怎么共享一台打印机共享,多台电脑怎样共享一台打印机?这两个设备完美实现!...
- 实例:下载所有XKCD漫画