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 }
  • 相关阅读:
    自定义sql server 聚合涵数
    EF CodeFirst学习笔记004--足够聪明
    EF CodeFirst学习笔记003--如何创建表
    EF CodeFirst学习笔记002--更新数据库表
    EF CodeFirst学习笔记001--主键约定
    SQL Server 2008中SQL增强之一:Values新用途 001
    SQLServer 学习笔记 序
    设计模式之单例模式
    如何控制数据库表中的某个字段的权限
    利用ResultFilter实现asp.net mvc3 页面静态化
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4858962.html
Copyright © 2011-2022 走看看