网站建设包括哪些内容,一级造价工程师报名网站,静态网站模板古典,泉州建设网站力扣202. 快乐数
202. 快乐数 - 力扣#xff08;LeetCode#xff09;
难度 简单
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为#xff1a;
对于一个正整数#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为…力扣202. 快乐数
202. 快乐数 - 力扣LeetCode
难度 简单
编写一个算法来判断一个数 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提示
1 n 23^1 - 1
class Solution {
public:bool isHappy(int n) {}
}; 解析代码
类似判断环形链表的快慢指针了解一下鸽巢原理 看一下环形链表的讲解
数据结构与算法⑥(第二章OJ题下)后八道链表面试题-CSDN博客
此题为什么一定会成环
此题中最大范围为23^1 - 1 等于 2.1*10^9 小于 999999999910个9- 每个数平方后为为9^2 * 10 810所以超过810次每个数平方后至少会有两个数落在[1,810]此时成环的时候slow等于1就是快乐数。
代码
class Solution {
public:int bitSum(int n){int sum 0;while(n){int x n % 10;sum x*x;n / 10;}return sum;}bool isHappy(int n) {int slow n, fast bitSum(n);while(slow ! fast){slow bitSum(slow);fast bitSum(bitSum(fast));}return slow 1;}
};