使用kotlin解决这个问题:970. 强整数 中等 105 相关企业 给定三个整数 x 、 y 和 bound ,返回 值小于或等于 bound 的所有 强整数 组成的列表 。 如果某一整数可以表示为 xi + yj ,其中整数 i >= 0 且 j >= 0,那么我们认为该整数是一个 强整数 。 你可以按 任何顺序 返回答案。在你的回答中,每个值 最多 出现一次。 示例 1: 输入:x = 2, y = 3, bound = 10 输出:[2,3,4,5,7,9,10] 解释: 2 = 20 + 30 3 = 21 + 30 4 = 20 + 31 5 = 21 + 31 7 = 22 + 31 9 = 23 + 30 10 = 20 + 32 示例 2: 输入:x = 3, y = 5, bound = 15 输出:[2,4,6,8,10,14] 提示: 1 <= x, y <= 100 0 <= bound <= 106
时间: 2023-12-04 09:04:43 浏览: 73
vertx-kotlin-example:Vert.x + Kotlin示例
好的,我来为您提供一个使用 Kotlin 解决该问题的代码实现:
```kotlin
fun powerfulIntegers(x: Int, y: Int, bound: Int): List<Int> {
val set = mutableSetOf<Int>()
var i = 0
while (x.toDouble().pow(i) < bound) {
var j = 0
while (x.toDouble().pow(i) + y.toDouble().pow(j) <= bound) {
set.add((x.toDouble().pow(i) + y.toDouble().pow(j)).toInt())
if (y == 1) break
j++
}
if (x == 1) break
i++
}
return set.toList()
}
```
该算法的思路是:使用两个 while 循环分别枚举 x 和 y 的幂,然后将它们的和加入到一个 set 中,最后将 set 转换成 list 返回即可。时间复杂度为 O(log(bound)^2),空间复杂度为 O(log(bound)^2)。
阅读全文