Happy Number – LeetCode 202
Problem
Description
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
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$
Answer
Original
Code
1 | class Solution { |
思路
因为非快乐数会进入一个循环,所以和昨天一样使用快慢双指针来检测。时间复杂度$O(n)$,空间复杂度$O(1)$。
耗时$3$ ms,排名$89.21\%$
Better
思路
更多的判环算法看这里Wiki。