介绍:编写一个算法来判断一个数是不是“快乐数”。

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

示例:

输入: 19
输出: true
解释:
12+92=821^2 + 9^2 = 8212+92=82
82+22=688^2 + 2^2 = 6882+22=68
62+82=1006^2 + 8^2 = 10062+82=100
12+02+02=11^2 + 0^2 + 0^2 = 112+02+02=1

C++源代码:

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include <sstream>
#include<set>using namespace std;int numSum(int n)
{int sum = 0;int x;while (n != 0){x = n % 10;n = n / 10;sum += x * x;//这里是对每个位置上的数字求平方和}return sum;
}bool isHappy(int n)
{while (true){n = numSum(n);if (n == 4){break;}if (n == 1){return true;}}return false;
}int main()
{bool happy;happy = isHappy(20);cout << happy << endl;system("pause");return 0;
}

对输入的20来说,不是快乐数,最终返回的值为false。

除了C++源代码,官方还提供了一份python参考代码。基本思想是:判断出现的数之前有没有出现过,出现过就会产生循环,就不是快乐数。可以用集合 set 来记录之前出现的数字。

def isHappy(self, n):""":type n: int:rtype: bool"""ss = set()while True:if n == 1:return Truetotal = 0while n:total += (n % 10) * (n %10)n = n // 10if total in ss:return Falsess.add(total)n = total

LeetCode之快乐数相关推荐

  1. leetcode 202. 快乐数 思考分析(哈希集合与双指针解)

    1.题目 编写一个算法来判断一个数 n 是不是快乐数. 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变 ...

  2. LeetCode 202. 快乐数(快慢指针)

    1. 题目 2. 解题 一个数经过若干次各位数平方和后,会等于它自己 使用类似环形链表的快慢指针法,最终快慢指针相遇,若不为1则是不快乐数 class Solution {public:int bit ...

  3. 【leetcode】快乐数

    编写一个算法来判断一个数 n 是不是快乐数. 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1. ...

  4. 2022-1-18 Leetcode 202.快乐数

    问题就在于如何判断无限循环? 我是要求最多循环20次 class Solution {public:bool isHappy(int n) {int sum = 0;int a = 0;int cou ...

  5. LeetCode 202. 快乐数【哈希表】

    202. 快乐数 编写一个算法来判断一个数 n 是不是快乐数. 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和. 然后重复这个过程直到这个数变为 1,也可能是 无限 ...

  6. leetcode 202 快乐数

    class Solution { public:bool isHappy(int n) {unordered_map<int,bool> m;while(n!=1){m[n]=true;i ...

  7. Leetcode 202. 快乐数 解题思路及C++实现

    解题思路: 用递归的方法,出现1,就返回true,这里用了 unordered_map 来记录是否会出现循环.(也可以用unordered_set) 通过计算余数和商,来得到每个位置数字的平方和.具体 ...

  8. 129. Leetcode 202. 快乐数 (哈希表)

    class Solution:def isHappy(self, n: int) -> bool:set_ = set()while 1:sum_ = self.getSum(n)if sum_ ...

  9. Leetcode 202.快乐数(哈希容器来检测是否出现重复)

    传送门:力扣 所学知识: 1.求和过程,去数值的单数操作,使用while(n)来操作.很强. int getSum(int n) {int sum = 0;while (n) {sum += (n % ...

  10. LeetCode实战:快乐数

    题目英文 Write an algorithm to determine if a number is "happy". A happy number is a number de ...

最新文章

  1. ios 标准 #pragma mark的用法
  2. php模拟post提交请求与调用接口
  3. 大二第一学期期末课程设计 2015.12.28
  4. src与href属性的区别
  5. 一道非常简单的签到题
  6. java框架之SpringBoot(5)-SpringMVC的自动配置
  7. date日期 和 date时间拼接_函数周期表丨时间丨值丨DATE
  8. 中国女子高尔夫球场市场趋势报告、技术动态创新及市场预测
  9. 边缘独立(marginal independent)的理解及举例
  10. ESP8266-01/01S配对阿里云生活物联网教程(超详细)
  11. java中怎么表示数组中的某个值_java中如何高效判断数组中是否包含某个特定的值...
  12. 【无标题】IDM + 油猴 + 百度云
  13. winrar解压时出现诊断信息怎么办?
  14. qq空间显示手机型号android,任意修改QQ空间发表说说显示的手机型号
  15. debian dos2unix
  16. 希捷ST31000528AS Disk Boot Failure, Insert System Disk and Press Enter和飞利浦的193ei显示器亮的问题
  17. 在matlab使用矩阵的方法计算DFT
  18. 小米的服务器地址怎么修改,小米无线路由器IP地址怎么修改
  19. 手写汉字识别数据集的预处理
  20. U盘和存储卡实际上可以轻松的创建隐藏分区制作PE启动盘

热门文章

  1. 4.2 react patterns(转)
  2. King's Quest - poj 1904(强连通分量+外挂输入输出)
  3. 使用JavaScript创建Table时,用cellSpacing而不是cellspacing
  4. 自定义网页头部前面小图标
  5. C#使用RabbitMQ(转)
  6. js使用闭包循环为a标签正确添加事件
  7. GLIBCXX_3.4.21 not found(转载)
  8. MySQL 阿里巴巴JAVA开发手册-MySQL相关
  9. MySQL 浅谈NOT NULL和DEFAULT的关系
  10. 堆排序HeapSort