• 202-Happy Number


    【题目】

      写一个算法判断一个数是否"happy"

      一个"happy"数的定义如下:开始于任意一个正整数,将该数替换为所有位上的数的平方和,然后重复这个过程直到这个数等于1,或者它可能无限循环(不包括1),这些结束于1的为"happy"数

      举例: 19是一个"happy"数

        12+92=82

          82+22=68

        62+82=100

        12+02+02=1

    【分析】

      1.主要的问题是如何结束循环

      2.记录一个HashMap,将每次计算过后的数存入map中,当下一次遇到就直接返回false

    【算法实现】

    public class Solution {
        public boolean isHappy(int n) {
            Map<Integer,Boolean> map = new HashMap<Integer,Boolean>();
            int sum = helper(n);
            while(sum != 1) {
                if(map.get(sum) != null && map.get(sum) == true) {
                    return false;
                }
                map.put(sum,true);
                sum=helper(sum);
            }
            return true;
        }
        
        public int helper(int n) {
            int res = 0;
            while(n != 0) {
                int i = n%10;
                res += i*i;
                n = n/10;
            }
            return res;
        }
    }
  • 相关阅读:
    Linux外部设备的使用
    Linux硬件信息查询
    Linux中swap分区设置
    状态检测型防火墙
    CentOS更换源,亲测可用
    Linux文件权限序列简述
    Linux终端打印文本色彩
    Linux 系统命令之netstat
    Linux配置DNS服务器
    水题一枚
  • 原文地址:https://www.cnblogs.com/hwu2014/p/4519582.html
Copyright © 2020-2023  润新知