• 202. 快乐数(JavaScript)


    题目描述

    请添加图片描述

    解题思路

    如果不仔细看题目,就会觉得这题的样例会进入死循环,然后导致程序超时。

    然而这题主要是要理解题目的意思,重点在无限循环,也就是说求和的值会重复出现,如果我们要快速判断一个元素是否出现集合里的时候,首先就要想到哈希表查询

    补充

    取整:
    js中/与c和cpp不同,不会自动取整,一般取整方法如下:

    	n=Math.floor(n); //取整,返回一个小于n的最大整数。
    
    • 1

    JavaScript Map用法:

    • Map.set(key,value ): 可以给哈希表填充一个键值对
    • Map.get( key): 返回某个 Map 对象中的一个指定key的元素,也就是说可以获取到某个元素方便进行后续处理。
    • Map.has( key): 返回一个 bool 值,用来表明 map 中是否存在指定元素
    • Map.delete( key):移除 Map 对象中指定的元素。

    JavaScript Set用法:
    和map有区别,set对象是只有value作为参数。

    • Set.add(value):给set对象末尾添加一个值
    • Set.has(value):返回一个 bool 值,判断set对象内是否已经存入该值

    AC代码

    请添加图片描述
    Map方法:

    /**
     * @param {number} n
     * @return {boolean}
     */
    var isHappy = function(n) {
        let map = new Map();
    
        getSum =function (n){
            let sum = 0;
            while(n){
                sum+=(n%10)**2;
                n=Math.floor(n / 10); //取整
            }
            return sum;
        }
    
        while(1){
            n = getSum(n);
            if(map.has(n))
                return false;
            if(n==1)
                return true;
            map.set(n,1);
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    Set方法:

    /**
     * @param {number} n
     * @return {boolean}
     */
    var isHappy = function(n) {
        let set = new Set();
        getSum =function (n){
            let sum = 0;
            while(n){
                sum+=(n%10)**2;
                n=Math.floor(n / 10); //取整
            }
            return sum;
        }
        while(1){
            n = getSum(n);
            if(set.has(n))
                return false;
            if(n==1)
                return true;
            set.add(n);
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
  • 相关阅读:
    四川迎来降温降雨,如何提高该地区城市的内涝应对能力?
    牛客小白月赛77
    【uniapp】短信验证码输入框
    Flume分布式日志采集
    【 Ubuntu】systemd服务创建、启用、状态查询、自启等
    Linux系统中使用vim编写C语言代码实现过程
    stride与padding对输出尺寸的计算
    C++map和set
    【单片机】11-步进电机和直流电机
    旷视 CEO 印奇被敲诈勒索:不给 300 万就出售公司敏感信息!
  • 原文地址:https://blog.csdn.net/weixin_51914472/article/details/126762583