算法设计与应用基础
来源:互联网 发布:布尔人 知乎 编辑:程序博客网 时间:2024/06/05 04:24
202. Happy Number
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: 19 is a happy number
- 12 + 92 = 82
- 82 + 22 = 68
- 62 + 82 = 100
- 12 + 02 + 02 = 1
I see the majority of those posts use hashset to record values. Actually, we can simply adapt the Floyd Cycle detection algorithm. I believe that many people have seen this in the Linked List Cycle detection problem. The following is my code:
int digitSquareSum(int n) { int sum = 0, tmp; while (n) { tmp = n % 10; sum += tmp * tmp; n /= 10; } return sum;}bool isHappy(int n) { int slow, fast; slow = fast = n; do { slow = digitSquareSum(slow); fast = digitSquareSum(fast); fast = digitSquareSum(fast); } while(slow != fast); if (slow == 1) return 1; else return 0;}
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- 算法设计与应用基础
- C语言指针的例题
- C++ 06 —— 拷贝构造函数
- 关于CSS的总结
- 12. Integer to Roman
- java 枚举
- 算法设计与应用基础
- LinkedBlockingQueue源码分析(JDK8)
- 使用Google与Chrome windows快捷键
- 以太坊和超级账本对比
- javascript系统时间设置
- MySQL的查询缓存功能现已成了瓶颈!
- 【问题收录】Ubuntu Starting LightDM Display Manager fail
- Linux基础(虚拟机搭建&常用命令&mysql安装以及Jdk安装)
- 总结2