zoukankan      html  css  js  c++  java
  • LeetCode OJ:Happy Number(欢乐数)

    Write an algorithm to determine if a number is "happy".

    A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.

    Example: 19 is a happy number

    • 1 + 81 = 82
    • 64 + 4 = 68
    • 36 + 64 = 100
    • 1 + 0 + 0 = 1

    欢乐数,就是不断将位的平方相加为新数,看看最后得到的数是不是1,是的话就是欢乐数,否则不是。代码比较简单,用一个set保存下来已经求到过的不是1的数字,一旦

    后期某个计算到的数字能在set中找到(不是1),那么就一定进入到死循环当中了。这是就应该返回false, 否则一旦某个计算结果是1那么久返回true,代码见下:

     1 class Solution {
     2 public:
     3     bool isHappy(int n) {
     4         set<int> sample;
     5         sample.insert(n);
     6         int s = 0;
     7         for(;;){
     8             while(n != 0){
     9                 s += (n % 10) * (n % 10);
    10                 n /= 10;
    11             }
    12             if(s == 1)
    13                 return true;
    14             else{
    15                 if(sample.find(s) != sample.end())
    16                     return false;
    17                 sample.insert(s);
    18                 n = s;
    19                 s = 0;
    20             }
    21         }
    22     }
    23 };

     java版本如下所示,方法相同:

     1 public class Solution {
     2     public boolean isHappy(int n) {
     3         HashSet<Integer> set = new HashSet<Integer>();
     4         do{
     5             if(set.contains(n))
     6                 return false;
     7             set.add(n);
     8             int tmp = 0;
     9             while(n != 0){
    10                 tmp += (n%10)*(n%10);
    11                 n/=10;
    12             }
    13             n = tmp;
    14         }while(n!=1);
    15         return true;
    16     }
    17 }
  • 相关阅读:
    Redis Hashes 巧用sort排序
    Redis 压缩存储的配置
    计算
    关于时间大小判断的坑和网上工具类的看法
    Mysql中字段类型之时间戳大坑2
    Mysql中字段类型之时间戳大坑
    Spring和springmvc父子容器注解扫描问题详解
    JXL导出Excel工具类
    Maven学习
    MySQL之账户管理
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4858962.html
Copyright © 2011-2022 走看看