LeetCode之快乐数
介绍:编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 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之快乐数相关推荐
- leetcode 202. 快乐数 思考分析(哈希集合与双指针解)
1.题目 编写一个算法来判断一个数 n 是不是快乐数. 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变 ...
- LeetCode 202. 快乐数(快慢指针)
1. 题目 2. 解题 一个数经过若干次各位数平方和后,会等于它自己 使用类似环形链表的快慢指针法,最终快慢指针相遇,若不为1则是不快乐数 class Solution {public:int bit ...
- 【leetcode】快乐数
编写一个算法来判断一个数 n 是不是快乐数. 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1. ...
- 2022-1-18 Leetcode 202.快乐数
问题就在于如何判断无限循环? 我是要求最多循环20次 class Solution {public:bool isHappy(int n) {int sum = 0;int a = 0;int cou ...
- LeetCode 202. 快乐数【哈希表】
202. 快乐数 编写一个算法来判断一个数 n 是不是快乐数. 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和. 然后重复这个过程直到这个数变为 1,也可能是 无限 ...
- leetcode 202 快乐数
class Solution { public:bool isHappy(int n) {unordered_map<int,bool> m;while(n!=1){m[n]=true;i ...
- Leetcode 202. 快乐数 解题思路及C++实现
解题思路: 用递归的方法,出现1,就返回true,这里用了 unordered_map 来记录是否会出现循环.(也可以用unordered_set) 通过计算余数和商,来得到每个位置数字的平方和.具体 ...
- 129. Leetcode 202. 快乐数 (哈希表)
class Solution:def isHappy(self, n: int) -> bool:set_ = set()while 1:sum_ = self.getSum(n)if sum_ ...
- Leetcode 202.快乐数(哈希容器来检测是否出现重复)
传送门:力扣 所学知识: 1.求和过程,去数值的单数操作,使用while(n)来操作.很强. int getSum(int n) {int sum = 0;while (n) {sum += (n % ...
- LeetCode实战:快乐数
题目英文 Write an algorithm to determine if a number is "happy". A happy number is a number de ...
最新文章
- ios 标准 #pragma mark的用法
- php模拟post提交请求与调用接口
- 大二第一学期期末课程设计 2015.12.28
- src与href属性的区别
- 一道非常简单的签到题
- java框架之SpringBoot(5)-SpringMVC的自动配置
- date日期 和 date时间拼接_函数周期表丨时间丨值丨DATE
- 中国女子高尔夫球场市场趋势报告、技术动态创新及市场预测
- 边缘独立(marginal independent)的理解及举例
- ESP8266-01/01S配对阿里云生活物联网教程(超详细)
- java中怎么表示数组中的某个值_java中如何高效判断数组中是否包含某个特定的值...
- 【无标题】IDM + 油猴 + 百度云
- winrar解压时出现诊断信息怎么办?
- qq空间显示手机型号android,任意修改QQ空间发表说说显示的手机型号
- debian dos2unix
- 希捷ST31000528AS Disk Boot Failure, Insert System Disk and Press Enter和飞利浦的193ei显示器亮的问题
- 在matlab使用矩阵的方法计算DFT
- 小米的服务器地址怎么修改,小米无线路由器IP地址怎么修改
- 手写汉字识别数据集的预处理
- U盘和存储卡实际上可以轻松的创建隐藏分区制作PE启动盘
热门文章
- 4.2 react patterns(转)
- King's Quest - poj 1904(强连通分量+外挂输入输出)
- 使用JavaScript创建Table时,用cellSpacing而不是cellspacing
- 自定义网页头部前面小图标
- C#使用RabbitMQ(转)
- js使用闭包循环为a标签正确添加事件
- GLIBCXX_3.4.21 not found(转载)
- MySQL 阿里巴巴JAVA开发手册-MySQL相关
- MySQL 浅谈NOT NULL和DEFAULT的关系
- 堆排序HeapSort