60天力扣打卡(第2天)

简介: 60天力扣打卡(第2天)

题目:

202. 快乐数

编写一个算法来判断一个数 n 是不是快乐数。

「快乐数」 定义为:

  • ·对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
  • ·然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
  • ·如果这个过程 结果为 1,那么这个数就是快乐数。

如果 n快乐数 就返回 true ;不是,则返回 false

示例 1:

输入:n = 19

输出:true

解释:

12 + 92 = 82

82 + 22 = 68

62 + 82 = 100

12 + 02 + 02 = 1


示例 2:

输入:n = 2

输出:false

我们面对这类题有两种解法。

法一:

假设给定一个数m,我们首先要知道各位的数字,然后将它们加起来。再根据快乐数的定义,就可以将本题解决。

int headle(int n)
{
     int i;
     int s=0;
     while(n)
     {
        i=n%10;
        s=s+i*i;
        n=n/10;
                  }
      return s;
                            }
bool isexit(int *s,int n)
{  
     int i=0;
     for(i=0;i<1000;i++)
     {
         if(s[i]==n)
          return ture;
                        }
          return false;
                              }
bool ishappy(int n)
{
    int i=0;
    int s[1000];
    while(!isexit(s,n))
    {   
        s[i]=n;
        i++;
        n=headle(n);
                       }
         return n==1;
                           }

法二:

龟兔赛跑算法。

我们假设兔子与乌龟在同一个起点。乌龟每次走一步,兔子每次走两步。如果兔子与乌龟相遇,那门一定在转圈。如果在数字1处相遇,那门一定是happy number。

int headle(int n)
{
     int s=0;
     int i;
     while(n)
     {
         i=n%10;   
         s=s+i*i;
         n=n/10;
                    }
                           }
bool ishappy(int n)
{
      int tru=n;
      int rib=n;
      do{
        tru=headle(tru);
        rib=headle(headle(rib));
                                  }while(tru!=rib);
         return tru==1;
                                                    }
相关文章
|
SQL 消息中间件 缓存
库存扣减问题
库存扣减问题
库存扣减问题
|
8月前
|
C++ Python
二刷力扣--数组
二刷力扣--数组
|
机器学习/深度学习 算法 C语言
60天力扣打卡(第一天)
60天力扣打卡(第一天)
|
数据安全/隐私保护 C++
VS Code也可以刷力扣了~
VS Code也可以刷力扣了~
VS Code也可以刷力扣了~
|
消息中间件 存储 数据库
扣减库存代码实现2|学习笔记
快速学习扣减库存代码实现2
169 0
扣减库存代码实现2|学习笔记
|
消息中间件 RocketMQ 开发者
扣减库存代码实现1|学习笔记
快速学习扣减库存代码实现1
185 0
扣减库存代码实现1|学习笔记
|
算法
怒刷力扣(出现一次的数字)
这个题不熟悉异或的同学可能找不到这个解题的方法。做了这么久的算法,发现很多算法题都能用到数学的方法进行计算,这样说可能不合适,算法本身就是数学的一种解题方法。还是感觉自身掌握的太少了。
166 4
怒刷力扣(出现一次的数字)
|
存储
怒刷力扣(加一)
数字加一如果放到数组中会发生哪些奇奇怪怪得事情呢?那么接下来就一起看看数字放在数组中加一,怎么计算吧。
107 1
怒刷力扣(加一)