標籤:leetcode
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
解題思路
判斷中間結果是否出現重複即可
實現代碼[C++]
//Rumtime:10msclass Solution {public: bool isHappy(int n) { set<int> nums; while(true) { if (n == 1) { return true; } if (nums.find(n) == nums.end()) { nums.insert(n); int sum = 0; while(n) { int x = n % 10; sum += x * x; n /= 10; } n = sum; } else { return false; } } }};
實現代碼[Python]
# Runtime:76msclass Solution: # @param {integer} n # @return {boolean} def isHappy(self, n): SQUARE = dict([(c, int(c)**2) for c in "0123456789"]) s = set() while n != 1 and n not in s: s.add(n) n = sum(SQUARE[d] for d in str(n)) return n == 1
[LeetCode] Happy Number