大学电子商务网站建设,高平市网站建设公司,一键logo设计生成器,seo 网站标题长度原题链接#xff1a; https://leetcode.cn/problems/sum-of-square-numbers/
解题思路#xff1a;
a和b一定是000到c\sqrt cc之间的某个值。将a的初始值设为0。b的初始值设为c\sqrt cc#xff0c;b必须为整数。a和b向中间逼近#xff0c;查找满足条件的值。由于a和b是…原题链接 https://leetcode.cn/problems/sum-of-square-numbers/
解题思路
a和b一定是000到c\sqrt cc之间的某个值。将a的初始值设为0。b的初始值设为c\sqrt ccb必须为整数。a和b向中间逼近查找满足条件的值。由于a和b是可以交换的两者相遇时就查找了所有可能的值。a2b2ca^2b^2ca2b2c时b--。a2b2ca^2b^2ca2b2c时a。
/*** param {number} c* return {boolean}*/
var judgeSquareSum function (c) {let a 0 // a从最小值开始查找let b Math.floor(Math.sqrt(c)) // b从最大值开始查找需要保证初始值是整数// a和b可交换因此只要搜索到两者相遇即可while (a b) {// 计算当前的a^2 b^2值let curr a ** 2 b ** 2// 如果curr等于c表示找到相应整数if (curr c) {return true}// 如果curr大于c减小b向目标值逼近else if (curr c) {b--}// 如果curr小于c增大a向目标值逼近else {a}}// 如果退出循环表示未找到a和breturn false
}