202. 快乐数

题目描述

 编写一个算法来判断一个数 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]
上一篇:[转载] Python集合取交集intersection()函数和intersection_update()函数


下一篇:Python基础学习07——之字符串、集合、字典