【Leetcode】每日一题:自除数

自除数

自除数 是指可以被它包含的每一位数整除的数。
例如,128 是一个 自除数 ,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。
自除数 不允许包含 0 。
给定两个整数 left 和 right ,返回一个列表,列表的元素是范围 [left, right] 内所有的 自除数 。
来源:力扣(LeetCode)

AC代码

class Solution:
    def selfDividingNumbers(self, left: int, right: int) -> List[int]:
        return [n for n in range(left, right + 1) if self.isFlag(n)]

    def isFlag(self, n):
        if '0' in str(n):
            return False
        t = n % 10
        m = n
        while t != 0:
            if n % t != 0:
                return False
            else:
                m = m // 10
                t = m % 10
        return True

官方代码

class Solution:
    def selfDividingNumbers(self, left: int, right: int) -> List[int]:
        def isSelfDividing(num: int) -> bool:
            x = num
            while x:
                x, d = divmod(x, 10)
                if d == 0 or num % d:
                    return False
            return True
        return [i for i in range(left, right + 1) if isSelfDividing(i)]
# 作者:LeetCode-Solution

一个做法,简单题里属于思路单纯的

你可能感兴趣的:(算法刷题,daily,leetcode,每日一题,算法,自除)