Self Dividing Numbers(#728)

编号 名称 等级
728 Self Dividing Numbers Easy

思路

这个题首先要把给的数字每一位进行分割,写了一个递归 foo 返回一个list,这个list是数字的每一位。

之后再写个循环对产生的结果进行遍历就好。基本没什么难点。

代码

class Solution {
    fun selfDividingNumbers(left: Int, right: Int): List<Int> {
        var result = ArrayList<Int>()
        for (i in left..right) {
            var list = ArrayList<Int>()
            val arrayList = foo(i, list)
            var sum = 0
            arrayList.map {
                if (it != 0 && i % it == 0) {
                    sum += 1
                }
            }
            if (sum == arrayList.size) {
                result.add(i)
            }
        }
        return result
    }
    
    fun foo(num: Int, list: ArrayList<Int>): ArrayList<Int> {
        if ((num / 10 == 0) and (num % 10 == 0)) {
            return list
        }
        list.add(num % 10)
        val nums = num / 10
        foo(nums, list)
        return list
    }
}