题目英文

Write an algorithm to determine if a number is “happy”.

A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.

Example:

Input: 19
Output: true
Explanation:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

题目中文

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

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

示例:

输入: 19
输出: true
解释:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1输入:7
输出:true输入: 20
输出: false
解释:
20 => 4 + 0
4 => 16
16 => 1 + 36
37 => 9 + 49
58 => 25 + 64
89 => 64 + 81
145 => 1 + 16 + 25
42 => 16 + 4
20 可以看到, 20再次重复出现了, 所以永远不可能等于1

算法实现

// 首先定义一个Set集合,用来存放计算后的平方和m,
// 如果m在Set中已存在,即进入了死循环,则退出;
// 如果m不存在Set,则将m放入Set;
// 直至找到平方和为1或者进入死循环就退出。public class Solution {public bool IsHappy(int n) {HashSet<int> set = new HashSet<int>();int m = 0;while (true){while (n != 0){m += (int)Math.Pow(n % 10,2);n /= 10;}if (m == 1){return true;}if (set.Contains(m))return false;set.Add(m);n = m;m = 0;}        }
}

实验结果


相关图文

  • LeetCode实战:删除链表的倒数第N个节点
  • LeetCode实战:合并两个有序链表
  • LeetCode实战:两两交换链表中的节点
  • LeetCode实战:旋转链表
  • LeetCode实战:相同的树
  • LeetCode实战:对称二叉树
  • LeetCode实战:二叉树的最大深度
  • LeetCode实战:搜索二维矩阵
  • LeetCode实战:将有序数组转换为二叉搜索树
  • 资料分享:数学建模资料分享 – 图论部分
  • 资料分享:数学建模资料分享 – 神经网络部分
  • 如何利用 C# 实现 K 最邻近算法?
  • 如何利用 C# 实现 K-D Tree 结构?
  • 如何利用 C# + KDTree 实现 K 最邻近算法?
  • 如何利用 C# 对神经网络模型进行抽象?
  • 如何利用 C# 实现神经网络的感知器模型?
  • 如何利用 C# 实现 Delta 学习规则?
  • 如何利用 C# 实现 误差反向传播 学习规则?
  • 如何利用 C# 爬取带 Token 验证的网站数据?
  • 如何利用 C# 向 Access 数据库插入大量数据?
  • 如何利用 C# + Python 破解猫眼电影的反爬虫机制?

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 % ...

最新文章

  1. 【开源分享】VIDO-SLAM:一种视觉惯性动态物体SLAM系统
  2. 2019年上半年收集到的AI计算机视觉方向干货文章
  3. HDU 3046Pleasant sheep and big big wolf(切最小网络流)
  4. IBatis初体验2
  5. 波卡链Substrate (2)系统框架
  6. .NET实现之(WebService数据提供程序)
  7. debian jessie install note
  8. 数据那点事001---集合
  9. 也谈大公司病3——治大国不是烹小鲜
  10. 简单、易用的光盘封装工具-MKISO纪念版(V1.0.2.0)发布日志
  11. spring-第七篇之深入理解容器中的bean
  12. CS231n李飞飞计算机视觉 神经网络训练细节part2下
  13. C++二维vector初始化
  14. 三极管放大电路基本原理
  15. Maven系列第三讲 详解Maven解决依赖问题
  16. 麻理工MIT的脑计划eyewire (顺便学习一下医学影像知识)
  17. mysql异常-SQLSTATE[HY000]: General error: 1436 Thread stack overrun
  18. VMware虚拟机nat模式详解
  19. 太阳能路灯网站SEO执行方案
  20. 目标检测之Two Stage

热门文章

  1. 学web前端需要了解哪些常识
  2. Python中如何使用构造方法定义类
  3. ContentProvider访问问题
  4. python3 _笨方法学Python_日记_DAY3
  5. JPA 复杂查询 - Querydsl
  6. POJ 3174 暴力枚举
  7. Verilog与SystemVerilog编程陷阱:怎样避免101个常犯的编码错误
  8. android环境安装之android4.2安装(转)
  9. tmux/screen里面如何用鼠标滚轮来卷动窗口内容
  10. 网页失去焦点事件 visibilitychange