• 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循环刚进入时插入,不能在循环体最后插入。
  • 相关阅读:
    在Pycharm中使用GitHub
    Ubuntu20.04开启root账户的方法步骤
    使用git push文件到gitee
    Dell主机安装win10+Ubuntu20.04双系统
    Golang select 基础语法与用法
    Golang websocket 实现消息推送
    Golang + gRPC 实践
    Golang实现RPC
    unigui+fastReport实现web打印方案(43)
    [控件] 加强版 TOneSelection (改良自 Berlin 10.1 TSelection)
  • 原文地址:https://www.cnblogs.com/shuyingsoaring/p/5367647.html
Copyright © 2020-2023  润新知