LeetCode Happy Number高效解法
2016-08-04 17:06
246 查看
// Date : 2016.08.04
// Author : yqtao
// https://github.com/yqtaowhu
/[b]************************************************************************[/b]
*
* 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.
*
[b]************************************************************************[/b]/
//very quikly ,just using 0 ms
//reference :https://en.wikipedia.org/wiki/Happy_number
//just know 1 is happy number,and 4 is not
另一种递归解法,与上述思想是一致的
最后一种解法,普遍的解法
// Author : yqtao
// https://github.com/yqtaowhu
/[b]************************************************************************[/b]
*
* 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.
*
[b]************************************************************************[/b]/
//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 above class 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 =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 17. Letter Combinations of a Phone Number高效解法
- LeetCode Remove Duplicates 个人解法以及一些高效解法
- LeetCode189——Rotate Array两种解法(一种易读,一种高效)
- leetcode [Happy Number]//待整理多种解法
- LeetCode 147. Insertion Sort List插入排序链表的高效简单解法
- Leetcode 3Sum 高效解法[Java]
- LeetCode Remove Duplicates 个人解法以及一些高效解法
- LeetCode Longest Substring Without Repeating Characters简单高效解法
- 【LeetCode 】 Median of Two Sorted Arrays 简单高效的解法
- Leetcode Valid Anagram高效解法
- 39. Combination Sum [leetcode][javascript解法]
- leetcode 202. Happy Number
- Leetcode 202 Happy Number
- [leetcode] 202. Happy Number
- leetcode 202. Happy Number
- leetcode 第188题,我的解法,Best Time to Buy and Sell Stock IV
- 【LeetCode】96. Unique Binary Search Trees 解法及注释
- Leetcode Happy Number
- [leetcode] 202. Happy Number
- leetcode 202. Happy Number