【LeetCode】728. Self Dividing Numbers
2018-01-18 15:30
375 查看
Python版本:Python3.6.2
728. Self Dividing Numbers
A self-dividing number is a number that is divisible by every digit it contains.
For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.
Also, a self-dividing number is not allowed to contain the digit zero.
Given a lower and upper number bound, output a list of every possible self dividing number, including the bounds if possible.
Example 1:
Input:
left = 1, right = 22
Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
Note:
The boundaries of each input argument are 1 <= left <= right <= 10000.感觉自己写的很复杂,但是submit之后速度竟然不是最慢的,先贴代码记录下,有空想想简单的方法,感觉可以用迭代的思想。(\是换行符)
![](https://img-blog.csdn.net/20180118152847732?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VuZmxvd2VyX2tyaXM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
看了大神的代码,那简直优美!1行!瞻仰下:
728. Self Dividing Numbers
A self-dividing number is a number that is divisible by every digit it contains.For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.
Also, a self-dividing number is not allowed to contain the digit zero.
Given a lower and upper number bound, output a list of every possible self dividing number, including the bounds if possible.
Example 1:
Input:
left = 1, right = 22
Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
Note:
The boundaries of each input argument are 1 <= left <= right <= 10000.感觉自己写的很复杂,但是submit之后速度竟然不是最慢的,先贴代码记录下,有空想想简单的方法,感觉可以用迭代的思想。(\是换行符)
class Solution: def selfDividingNumbers(self, left, right): """ :type left: int :type right: int :rtype: List[int] """ res = [] while 1 <= left <= right <= 10000: if 1 <= left <= 9: res.append(left) if 10 <= left <= 99: if int(left / 10) != 0 and left % 10 != 0 and left % (int(left / 10)) == 0 and left % (left % 10) == 0: res.append(left) if 100 <= left <= 999: if int(left / 100) != 0 and int(left / 10) % 10 != 0 and left % 10 != 0 and left % int((left / 100)) == \ 0 and left % (int(left / 10) % 10) == 0 and left % (left % 10) == 0: res.append(left) if 1000 <= left <= 9999: if int(left / 1000) != 0 and int(left / 100) % 10 != 0 and int(left / 10) % 10 != 0 \ and left % 10 != 0 and left % (int(left / 1000)) == 0 and left % (int(lef 4000 t / 100) % 10) == 0\ and left % (int(left / 10) % 10) == 0 and left % (left % 10) == 0: res.append(left) left += 1 return res检验下:
a = Solution() print(a.selfDividingNumbers(left=1, right=22))
看了大神的代码,那简直优美!1行!瞻仰下:
return [num for num in range(left, right+1) if all((int(d) and not num % int(d)) for d in str(num))]这个结构num for num in range(a,b)碰到很多次,但一直不会用,下次要尝试用一用。
相关文章推荐
- leetcode 728. Self Dividing Numbers 自我除法的数 + 暴力求解
- Leetcode:728. Self Dividing Numbers
- 【LeetCode】728. Self Dividing Numbers
- 【跟Leon一起刷LeetCode】728. Self Dividing Numbers
- [Leetcode] 728. Self Dividing Numbers 解题报告
- LeetCode | 728. Self Dividing Numbers
- python--leetcode728. Self Dividing Numbers
- [LeetCode]728. Self Dividing Numbers
- 【LeetCode】728. Self Dividing Numbers 解题报告
- LeetCode 728. Self Dividing Numbers
- LeetCode-728. Self Dividing Numbers
- LeetCode 728. Self Dividing Numbers
- [Leetcode从零开刷]728. Self Dividing Numbers
- leetcode 728. Self Dividing Numbers
- 【LeetCode】728. Self Dividing Numbers
- LeetCode 728. Self Dividing Numbers
- LeetCode - 728. Self Dividing Numbers
- leetcode 728. Self Dividing Numbers
- 728. Self Dividing Numbers
- 728. Self Dividing Numbers