力扣(LeetCode)平方数之和 个人题解
Posted axiangcoding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣(LeetCode)平方数之和 个人题解相关的知识,希望对你有一定的参考价值。
给定一个非负整数 c
,你要判断是否存在两个整数 a
和 b
,使得 a2 + b2 = c。
示例1:
输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5
示例2:
输入: 3 输出: False
在这题里面,可以使用二分查找来缩小搜索的范围
由数学定理(我忘了具体的哪个定义)可知,a和b的具体取值范围落在0到根号c之间。然后简单运用二分法就能十分便捷找到答案了。
代码如下:
class Solution { public: bool judgeSquareSum(int c) { int l = 0; int r = floor(sqrt(c)); while(l<r) { if ((l*l)>(c-(r*r))) r--; else if ((l*l)<(c-(r*r))) l++; else return true; } return false; } };
以上是关于力扣(LeetCode)平方数之和 个人题解的主要内容,如果未能解决你的问题,请参考以下文章
精选力扣500题 第16题 LeetCode 1. 两数之和c++详细题解