zoukankan      html  css  js  c++  java
  • leetcode-【简单题】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^2 + 9^2 = 82
    • 8^2 + 2^2 = 68
    • 6^2 + 8^2 = 100
    • 1^2 + 0^2 + 0^2 = 1

    链接:

    https://leetcode.com/problems/happy-number/

    答案:

    暴力解决,直接给每个数的每位计算平方和就行,然后把中间的数都记录下来,如果下次出现这个数,就是loop了。

    代码:

     1 #include<vector>
     2 
     3 using std::vector;
     4 
     5 class Solution {
     6 private:
     7     vector<int> med;
     8     
     9     bool inMed(int n)
    10     {
    11         vector<int>::iterator beg;
    12         for(beg = med.begin(); beg != med.end(); ++ beg)
    13         {
    14             if(*beg == n)
    15             {
    16                 return true;
    17             }
    18         }
    19         
    20         return false;
    21     }
    22     
    23     int sum(int n)
    24     {
    25         int s = 0;
    26         while(n != 0)
    27         {
    28             int modn = n % 10;
    29             s += modn * modn;
    30             n = n /10;
    31         }
    32         
    33         return s;
    34     }
    35     
    36 public:
    37     bool isHappy(int n) 
    38     {
    39         if(n == 1 || n == 19 || n == 13 || n == 10)
    40         {
    41             return true;
    42         }
    43         
    44         med.clear();
    45         med.push_back(n);
    46         
    47         int result = n;
    48         bool isLoop = false;
    49         while( result != 1)
    50         {
    51             result = sum(result);
    52             if(result != 1 && inMed(result))
    53             {
    54                 isLoop = true;
    55                 break;
    56             }
    57             
    58             med.push_back(result);
    59         }
    60         
    61         return !isLoop;
    62     }
    63 };
    View Code

    代码中的isHappy()方法的最开头我是随便加了几个判断,哈哈,题目中给出的快乐数应该会在后台的测试数据中。

  • 相关阅读:
    kubernetes-harbor 私有仓库 帐号与密码 配置
    cloudstack4.11 centos7 安装文档
    检查hdfs块的块-fsck
    Kubernetes 1.13 正式发布,功能亮点一览!
    SnakeYaml快速入门
    chromedriver和ffdriver下载地址
    Python 卸载
    Apache httpclient
    Selenium文件上传
    Java Runtime.exec()用法
  • 原文地址:https://www.cnblogs.com/Shirlies/p/5659169.html
Copyright © 2011-2022 走看看