• 每周一题:平方数之和((更新JS)


    题目:

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

    示例1:

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

    示例2:

    输入: 3
    输出: False

    代码:

    var judgeSquareSum = function(c) {
        let square = Math.sqrt(c);
        for(let i=0; i<=square; i++){
            let val = c - i*i;
            let num = Math.sqrt(val); 
            // 判断是否是整数
            if(num%1 == 0){
                return true;
            }
        }
        return false;
    };
     

    通过率:

    思路:

    这道题我率先当一道计算题来算,a²+b²=c,设置另一个未知数d,假设c=d²,那么这个算式就转变成a²+b²=d²,所以开头我们可以使用Math.sqrt()的函数方法求出输入值的开平方根,然后建立循环;如: c = 8,2 * 2 + 2 * 2 = 8,开平方约为2.8,接着开始循环,设置临时变量i从0开始循环,i的取值范围始终小于等于c的开平方值,用c减去i²,得到一个新的数值,再通过Math.sqrt()进行开平方根,用if语句进行判断其是否为整数,假如开平方根为整数,说明存在两数平方和为 c,则返回true。如果循环完了,都不存在,就返回false

     不过虽然写出来了,执行用时和内存消耗不是很让人满意。

    简化之后的代码:

    var judgeSquareSum = function(c) {
      for(let i = 0; i * i <= c; i++){
        let last = Math.sqrt(c - i * i)
        if(last % 1 === 0) return true
      }
      return false
    };

    这里是将一些步骤进行了合并,简化了代码。但是执行效率好像还变低了。

  • 相关阅读:
    学习笔记-Python基础4-九九乘法表练习
    学习笔记-Python基础4-函数
    学习笔记-Python基础3-程序结构:顺序、分支、循环
    JS根据获取的navigator.userAgent,判断用户打开页面的终端
    代理模式,CGLIB 与Spring AOP实现原理
    ueditor不过滤保存html
    ecstore 新增input控件方法
    ecstore前台模板保留css样式
    ecstore 当前网址
    mysql 导入数据过大报错
  • 原文地址:https://www.cnblogs.com/sayg-1207/p/13536514.html
Copyright © 2020-2023  润新知