zoukankan      html  css  js  c++  java
  • LeetCode OJ -Happy Number

    题目链接:https://leetcode.com/problems/happy-number/

    题目理解:实现isHappy函数,判断一个正整数是否为happy数

      happy数:计算要判断的数的每一位的平方和,平方和为1则为happy数,不为1则将原数替换为此平方和,继续上述步骤,直到等于1(为happy数),或者进入不包含1的无限循环(非happy数)。

      测试用例:19为happy数:

          

    解题思路:

    定义set集合存每次计算得到的需判断数n,循环计算新的原数n,终止条件为n等于1或者set中出现重复的数字。循环体:将n插入到set中,循环取n的每一位计算其平方和,并将n等于这个平方和。最后循环结束,如果n等于1,则原数为happy数,否则不是。

    代码:

     1 class Solution {
     2 public:
     3     bool isHappy(int n) {
     4     set<int> result;
     5     int re = 0;
     6     while(n!=1&&!result.count(n)){
     7        result.insert(n);
     8        re = 0;
     9         while(n){
    10             int a = n%10;
    11             re+=a*a;
    12             n = n/10;
    13         }
    14         n = re;
    15     }
    16     if(n==1) return true;
    17     else return false;
    18     }
    19 };
    View Code

    卡住的点:

    1. 判断是否出现不为1的死循环,需要记录每次的原数,循环终止条件为原数为1,或者原数在记录的集合中已存在,即出现重复。
    2. 现写的代码结构中,将原数n插入到集合中,这步应在while循环刚进入时插入,不能在循环体最后插入。
  • 相关阅读:
    Java RandomAccessFile与MappedByteBuffer
    Apache httpClient
    gitolite migration to bitbucket
    logback身份证脱敏
    身份证号码-正则表达式
    webservice-整理
    Java高编译低运行错误(ConcurrentHashMap.keySet)
    IIS(互联网信息服务)
    ASP.NET MVC:UrlHelper.cs
    TortoiseSVN 和 VisualSVN
  • 原文地址:https://www.cnblogs.com/shuyingsoaring/p/5367647.html
Copyright © 2011-2022 走看看