zoukankan      html  css  js  c++  java
  • lintcode-488-快乐数

    488-快乐数

    写一个算法来判断一个数是不是"快乐数"。
    一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。

    样例

    19 就是一个快乐数。

    1^2 + 9^2 = 82
    8^2 + 2^2 = 68
    6^2 + 8^2 = 100
    1^2 + 0^2 + 0^2 = 1

    标签

    哈希表 数学

    思路

    使用 map 记录已经替换过的数,防止无限循环

    code

    class Solution {
    public:
        /*
         * @param n: An integer
         * @return: true if this is a happy number or false
         */
        bool isHappy(int n) {
            // write your code here
            if (n <= 0) {
                return false;
            }
    
            unordered_map<int, bool> isExisted;
    
            while (n != 1 && isExisted[n] != true) {
                isExisted[n] = true;
                int n2 = 0;
                while (n != 0) {
                    n2 += (n % 10) * (n % 10);
                    n = n / 10;
                }
                n = n2;
            }
            if (n == 1) {
                return true;
            }
            else {
                return false;
            }
        }
    };
    
  • 相关阅读:
    python 全栈基础作业题
    计算机基础之二:操作系统的发展史
    计算机基础系列之一:计算机硬件概述
    饼图
    折线图
    win_diy_monkey demo
    csv,Excel
    uiautomator2
    win ui自动化测试
    html
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7416649.html
Copyright © 2011-2022 走看看