木又连续日更第86天(86/100)
木又的第211篇leetcode解题报告
数学
类型第27篇解题报告
leetcode第728题:自除数
https://leetcode-cn.com/problems/self-dividing-numbers/
【题目】
自除数 是指可以被它包含的每一位数除尽的数。
例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。
还有,自除数不允许包含 0 。
给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。
示例 1:
输入:
上边界left = 1, 下边界right = 22
输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
注意: 每个输入参数的边界满足 1 <= left <= right <= 10000。
【思路】
本题好像只有暴力解法,判断left到right的数,哪些可以被其所有的余数整除。
【代码】
python版本
class Solution(object):
def selfDividingNumbers(self, left, right):
"""
:type left: int
:type right: int
:rtype: List[int]
"""
# 特殊情况
ls = list(range(0, 10))
if 0 < left <= right < 10:
return ls[left: right+1]
if left >= 10:
ls = []
else:
ls = ls[left:]
for i in range(max(11, left), right+1):
tmp = i
while tmp > 0:
tmp2 = tmp % 10
if tmp2 == 0 or i % tmp2 != 0:
break
tmp /= 10
if tmp == 0:
ls.append(i)
return ls