[LeetCode] 202. Happy Number 快乐数
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.
写一个算法判断一个数是不是快乐数。快乐数:一个正整数,如果对其各个位上的数字分别平方求和得到一个新的数,再进行同样的操作,如果结果变成了1,则说明是快乐数。
解法:循环求平方和,即求出当前数组的平方和后,再以此平方和作为新的数继续求平方和,而循环终止条件是:得到的平方和为1,或得到的平方和在之前的循环中出现过,那以后会一直循环,不可能达到1。判断平方和是否为1很简单,每次检查就好了;而判断平方和是否出现过,则只需要维持一个Set,每次循环检查当前平方和是否在Set中,在则终止循环,不在则将此平方和放到Set中。
Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class Solution { public boolean isHappy( int n) { Set<Integer> got = new HashSet<>(); while (n != 1 && !got.contains(n)) { got.add(n); int sum = 0 ; while (n != 0 ) { sum += Math.pow(n % 10 , 2 ); n /= 10 ; } n = sum; } return n == 1 ; } } |
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Solution: # @param {integer} n # @return {boolean} def isHappy( self , n): lookup = {} while n ! = 1 and n not in lookup: lookup[n] = True n = self .nextNumber(n) return n = = 1 def nextNumber( self , n): new = 0 for char in str (n): new + = int (char) * * 2 return new |
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Solution( object ): def isHappy( self , n): """ :type n: int :rtype: bool """ got = set () while n ! = 1 and n not in got: got.add(n) sum = 0 while n: sum + = (n % 10 ) * * 2 n / / = 10 n = sum return n = = 1 |
C++:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Solution { public : bool isHappy( int n) { set< int > got; while (n != 1 && got.find(n) == got.end()) { got.insert(n); int sum = 0; while (n) { sum += pow (n % 10, 2); n /= 10; } n = sum; } return n == 1; } }; |
All LeetCode Questions List 题目汇总
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步