码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode #728. Self Dividing Numbers

时间:2018-03-01 00:39:12      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:自身   isp   als   input   pen   bsp   地方   close   and   

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 == 0128 % 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

 

题意:定义了一种数字叫self-dividing,这类数字不包括0本身,然后自身数字包括的数字都能被整除,比如说24,自身包括2、4都能整除24,就是目标数字了,最后让找出一个范围内的所有的self-dividing

想法:其实想法很简单就是枚举这个范围里面的所有数字,然后1)判断有没有包括0,2)依次判断自身包含的数字能不能整除整个数字。应该都能很快就能实现出来,发现了实现的速度不算快,在以下几个地方做了改动

(1)就是不单独判断0,之前的写法是在转换成python中的字符串数组后先整体判断下有没有包括0,但其实这一步是不那么必要的,完全可以在判断它的特性,即是否能整除的这个过程中判断,代码上稍微会整洁一些

(2)另外一个就是我之前是把整个数字都先转换成字符串数组,多了转换这一步,其实是可以通过求余自除来得到自身数组,就可以少转换成数组这一步

tips:需要注意的是这个过程中的数据类型的判断,要判断数字0还是整数0,

 

技术分享图片代码参考
 1 class Solution(object):
 2     def selfDividingNumbers(self, left, right):
 3         """
 4         :type left: int
 5         :type right: int
 6         :rtype: List[int]
 7         """
 8         target_num = list()
 9         for i in range(left, right+1):
10             nums = i
11             while nums!=0:
12                 num = nums%10
13                 if num == 0 or i % num != 0:
14                     break
15                 nums = nums/10
16             if nums==0:
17                 target_num.append(i)
18         return target_num

 

Leetcode #728. Self Dividing Numbers

标签:自身   isp   als   input   pen   bsp   地方   close   and   

原文地址:https://www.cnblogs.com/lhppom/p/8486052.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!