LeetCode:Self Dividing Numbers(#728)

Self Dividing Numbers(#728)

编号 名称 等级
728 Self Dividing Numbers Easy

思路

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

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

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
}
}
不介意的话,可以请我喝杯咖啡吗?或扫一扫支付宝领红包