day-6

今天做这道!!

202. 快乐数
编写一个算法来判断一个数 n 是不是快乐数。

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

如果 n 是快乐数就返回 True ;不是,则返回 False 。

示例:

输入:19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

  u1s1 题目很好懂 找不到规律就无从下手

思路:
  为了找到规律先用程序打了个表,然后你就会发现在众多的重复过程之中,他们的数字到最后都会拥有重复的对象,也就是说,判断重复过程中的元素是否重复,则成为解题的关键。

  

过程:

  重复过程很简单,这里不再赘述,需要注意的是(n%10) *( n%10)必须加上括号,否则运算出错,以及map中自带的检查重复key方法containkay。

 public boolean isHappy(int n) {
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        while(!map.containsKey(n)){

            if(n==1){
                return true;
            }else {
                map.put(n, n);
            }
            n = sqrt(n);

        }
        return false;
    }

    public Integer sqrt(int n){
        int count=0;
        while(n!=0){
//            System.out.println("count:"+count);
            count += (n%10) *( n%10);
            n=n/10;
        }
        return count;
    }

一题小算法

全部评论

相关推荐

虚闻松声:简历看起来很清爽。几点建议。 1. 总结提炼项目工作内容。如第一个项目第一点,研发用户信息管理、购票功能:(然后具体展开)。还可以继续总结,如基础功能开发、算法优化座位分配、并发性能提升等等 2. 优化技术栈描述。全文多次出现Spring Boot,我感觉一次就够了。可以不写或者写整个体技术架构? 3. 增加业务指标描述。最好有一些业务效果的指标。或者优化的效果指标等等。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务