728. 自除数

自除数

题目描述:

自除数 是指可以被它包含的每一位数整除的数。

例如,128 是一个 自除数 ,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。
自除数 不允许包含 0 。

给定两个整数 left 和 right ,返回一个列表,列表的元素是范围 [left, right] 内所有的 自除数 。

示例 1:

输入:left = 1, right = 22
输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
示例 2:

输入:left = 47, right = 85
输出:[48,55,66,77]

提示:

1 <= left <= right <= 104
通过次数38,103提交次数50,927

思路:

时间复杂度:O(n),空间复杂度O(位数*right-left))

模拟即可

代码:

func selfDividingNumbers(left int, right int) []int {
    var res []int
    for i:=left;i<=right;i++{
        if check(i){
            res = append(res,i)
        }
    }
    return res
}

func check(num int)bool{
    var tmp []int
    tmp_num := num
    for tmp_num != 0{
        tmp = append(tmp,tmp_num%10)
        tmp_num /= 10
    } 
 
    for _,v := range tmp{
        if v == 0{
            return  false
        }
        if num % v != 0{
            return false
        }
    }
    return true
}

代码效率:

执行用时:0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗:4.1 MB, 在所有 Go 提交中击败了6.15%的用户


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!