/* * @lc app=leetcode.cn id=202 lang=c * * [202] 快乐数 * * https://leetcode-cn.com/problems/happy-number/description/ * * algorithms * Easy (52.26%) * Total Accepted: 12.9K * Total Submissions: 24.7K * Testcase Example: '19' * * 编写一个算法来判断一个数是不是“快乐数”。 * * 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 * 1。如果可以变为 1,那么这个数就是快乐数。 * * 示例: * * 输入: 19 * 输出: true * 解释: * 1^2 + 9^2 = 82 * 8^2 + 2^2 = 68 * 6^2 + 8^2 = 100 * 1^2 + 0^2 + 0^2 = 1 * * */ int Num(int x) { int ret=0; while(x){ ret+=(x%10)*(x%10); x/=10; } return ret; } bool isHappy(int n) { if(n<=0) return false; while(n!=1){ n=Num(n); if(n==4) return false; } return true; }
这里写了一个函数,专门用来累和的。
然后这里有个小知识,如果无限循环的话,最后结果永远都是4.
-----------------------------------------------------------------------------------
python:
# # @lc app=leetcode.cn id=202 lang=python3 # # [202] 快乐数 # # https://leetcode-cn.com/problems/happy-number/description/ # # algorithms # Easy (52.26%) # Total Accepted: 12.9K # Total Submissions: 24.7K # Testcase Example: '19' # # 编写一个算法来判断一个数是不是“快乐数”。 # # 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 # 1。如果可以变为 1,那么这个数就是快乐数。 # # 示例: # # 输入: 19 # 输出: true # 解释: # 1^2 + 9^2 = 82 # 8^2 + 2^2 = 68 # 6^2 + 8^2 = 100 # 1^2 + 0^2 + 0^2 = 1 # # # class Solution(object): def isHappy(self, n): # Write your code here if n is None: return False tmp = 0 while tmp != 1 and tmp != 4: tmp = 0 n = str(n) for i in n: tmp += int(i) ** 2 if tmp == 1: return True n = tmp if tmp == 1: return True return False