网站内页收录突然没了,网站建设杭州,网站排名易下拉刷词,做程序网站需要什么代码吗个人主页#xff1a;兜里有颗棉花糖 欢迎 点赞#x1f44d; 收藏✨ 留言✉ 加关注#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 #x1f354;本专栏旨在提高自己算法能力的同时#xff0c;记录一下自己的学习过程#xff0c;希望… 个人主页兜里有颗棉花糖 欢迎 点赞 收藏✨ 留言✉ 加关注本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 本专栏旨在提高自己算法能力的同时记录一下自己的学习过程希望对大家有所帮助 希望我们一起努力、成长共同进步。 点解直接跳转到该题目 目录 1️⃣题目描述2️⃣算法分析3️⃣代码编写 1️⃣题目描述
编写一个算法来判断一个数 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 231 - 1
2️⃣算法分析
利用快慢指针的思想当二者相等时说明完成了一个循环周期这个循环周期的完成要么是由快乐书 1 引起的要么就是因为不是快乐书导致的死循环引起的。前者就是快乐数而后者则不是快乐数。
3️⃣代码编写
class Solution {
public:int bitSum(int n){int sum 0;while(n){sum (n%10) * (n%10);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;}
};