LeetCode Happy Number高效解法
来源:互联网 发布:如何自学计算机编程 编辑:程序博客网 时间:2024/05/17 07:09
// Date : 2016.08.04
// Author : yqtao
// https://github.com/yqtaowhu
/************************************************************************
*
* 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
*
* 1^2 + 9^2 = 82
* 8^2 + 2^2 = 68
* 6^2 + 8^2 = 100
* 1^2 + 0^2 + 0^2 = 1
*
* Credits:Special thanks to @mithmatt and @ts for adding this problem and creating all test cases.
*
************************************************************************/
//very quikly ,just using 0 ms
//reference :https://en.wikipedia.org/wiki/Happy_number
//just know 1 is happy number,and 4 is not
class Solution {public: bool isHappy(int n) { int num=0; while(n!=1&&n!=4) { while(n) { num += (n%10) * (n%10); n/=10; } n=num;num=0; } return 1==n; }};
另一种递归解法,与上述思想是一致的
//recursion , the idea is simple to aboveclass Solution {public: bool isHappy(int n) { if (n==1) return true; if (n==4) return false; int num=0; while (n) { int t=n%10; num+=t*t; n/=10; } return isHappy(num); }};
最后一种解法,普遍的解法
//using map//if you dont know 4 is unhappy,just using it class Solution {public: bool isHappy(int n) { int num=0; unordered_map<int,bool> table; table[n]=1; while(n!=1) { while(n) { num += (n%10) * (n%10); n/=10; } if(table[num]) break; //is equal to pre number ,break ,if not do ,it will always iterator. else table[num]=1; //this is why using a map to control. n=num;num=0; } return 1==n; }};
- LeetCode Happy Number高效解法
- leetcode [Happy Number]//待整理多种解法
- LeetCode 17. Letter Combinations of a Phone Number高效解法
- [leetcode] Happy Number
- leetcode: Happy Number
- [LeetCode] Happy Number
- [LeetCode]Happy Number
- LeetCode 202 Happy Number
- LeetCode OJ Happy Number
- [LeetCode]202.Happy Number
- LeetCode 202-Happy Number
- leetcode-202 Happy Number
- [LeetCode]Happy Number
- leetcode 202: Happy Number
- leetcode Happy Number
- [LeetCode 202]Happy Number
- LeetCode (24) Happy Number
- LeetCode Happy Number 题解
- Hadoop2.7.0学习——动态添加节点
- 【python新手入门】python List 个人随笔和介绍
- Struts 2 入门实例
- 异步加载框架
- hdu1032
- LeetCode Happy Number高效解法
- Android Audio 3: Audio的实现
- hdu 5802 Windows 10
- Ubuntu 16.04编译Android 6.0.1记录
- jAVA IO 以及 NIO 理解
- android4.4.2修改系统分区大小
- Android应用全局获取Context的技巧
- 找单词问题
- 随机数发生器