题目描述
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」定义为:
- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
- 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
- 如果 可以变为 1,那么这个数就是快乐数。
原题请参考链接https://leetcode-cn.com/problems/happy-number
题解
方法一 【哈希集合】
class Solution:
def isHappy(self, n: int) -> bool:
s = set()
while n != 1 and n not in s:
s.add(n)
total_s = 0
while n > 0:
n,m = divmod(n,10)
total_s += m**2
n = total_s
if n in s:
return False
return True
方法二 【双指针】
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
set1 = set(nums1)
set2 = set(nums2)
if len(set1) > len(set2):
return [x for x in set1 if x in set2]
return [x for x in set2 if x in set1]