HappyNumber
来源:互联网 发布:2017年国产动漫数据 编辑:程序博客网 时间:2024/09/21 11:22
题目:
所谓HappyNumber,是给定一个正整数开始,由整数的每一位的平方和得到一个新的整数,再求得新整数的平方和,依此进行下去,如果最后结果为1,则最初给定的数字就是HappyNumber,否则最终会进入一个循环(不包括1),该数就是不HappyNumber。
例如:19是一个HappyNumber
1^2 + 9^2 = 82 (1^2 在题目里表述 1 的平方,非编程语言中的异或运算符)
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
思路:
1. 第一点需想到,如果结果不等于1,最后肯定会进入一个循环
2. 判断序列,链表循环,很容易想到快慢法
3. 这里还有一个巧妙的思想,运用hashtable 或者 bool 数组,也可以判断循环
代码:
public class Solution { //快慢法 public bool IsHappy(int n){ int slow,fast; slow = fast = n; do{ slow = DigitSum(slow); fast = DigitSum(fast); fast = DigitSum(fast); }while(slow != fast); if(slow == 1) return true; return false; } //bool数组与hashtable的思想一样,循环意味着重复 public bool IsHappy(int n) { bool[] esp = new bool[1000]; n = DigitSum(n); while(!esp[n]){ esp[n] = true; if(n == 1){ return true; } n = DigitSum(n); } return false; } public int DigitSum(int n){ int sum = 0; while(n > 0){ int digit = n % 10; sum += (digit * digit); n = n / 10; } return sum; }}
0 0
- HappyNumber
- Leetcode202-HappyNumber
- 【Java】happyNumber
- leetcode Javascript HappyNumber
- HappyNumber解题报告
- LeetCode No.202 HappyNumber
- HappyNumber leetcode算法题
- 使用第三方表单检验saripaar的时候,Android SDK版本不同,要注意啦,提示会有点小问题
- Java笔记---解决eclipse报PermGen space异常的问题
- Linux文件所用到的系统调用的函数总结
- 学习html5(4)
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'itcastoa.user' doesn't exist
- HappyNumber
- git更新代码
- go 语言
- 学习源代码内核一定要独立思考、勤于实践
- AndroidManifest.xml
- java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{
- 机器学习算法的性能评估
- 1023. Have Fun with Numbers (20)【字符串操作】——PAT (Advanced Level) Practise
- hdoj2018--母牛故事