LeetCode 202. Happy Number (Easy)
2017-11-15 12:48
375 查看
题目描述:
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
题目大意:判断一个数字是否“开心数”:每一位的平方的和等于1就是开心数,否则用该和继续运算。
思路:一直循环运算就可以了,但是怎么让循环终止呢(终止条件是和为1或者找不到这个数),用一个set把之前的结果存起来,如果发现结果和之前的结果相同就说明进入了“循环“的状态。然而既然如此,为什么不用寻环算法呢…..直接快慢指针相遇就可以知道有没有环了。
c++代码:
class Solution { public: bool isHappy(int n) { set<int> s; while (1) { n = getNums(n); if (n == 1) return true; else { if (s.count(n) == 0) s.insert(n); else return false; } } } int getNums(int n) { int ret = 0; while (n != 0) { ret += (n % 10) * (n % 10); n /= 10; } return ret; } };
相关文章推荐
- [Leetcode 202, Easy] Happy Number
- Leetcode 202. Happy Number (Easy) (cpp)
- 【LeetCode】(202)Happy Number(Easy)
- 【Leetcode】202-Happy Number【Java实现】【Easy】
- 202.leetcode Happy Number(easy)[数学 快乐数]
- leetcode 202(easy)--Happy Number
- leetcode 202 Happy Number(难易度:Easy)
- (easy)LeetCode 202.Happy Number
- leetcode 202. Happy Number
- leetcode 202. Happy Number
- leetcode 202 Happy Number
- [LeetCode202]Happy Number判断一个数是不是happy number
- 【一天一道LeetCode】#202. Happy Number
- Leet Code OJ 202. Happy Number [Difficulty: Easy]
- leetcode-202-Happy Number
- 【LeetCode-面试算法经典-Java实现】【202-Happy Number(开心数字)】
- 【LEETCODE】202-Happy Number
- [LeetCode]202.Happy Number
- leetcode_c++:哈希: Happy Number(202)
- 【一天一道LeetCode】#202. Happy Number