• 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循环刚进入时插入,不能在循环体最后插入。
  • 相关阅读:
    Dictionary集合 字典
    装箱和拆箱
    List< >泛型集合
    Hashtable 键值对集合
    File 类 的基本操作
    简体转换繁体
    ArrayList集合长度的问题
    ArrayList  集合
    里式转换
    字符串中常用的方法
  • 原文地址:https://www.cnblogs.com/shuyingsoaring/p/5367647.html
Copyright © 2020-2023  润新知