使用kotlin完成这个题目:66. 加一 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。 示例 2: 输入:digits = [4,3,2,1] 输出:[4,3,2,2] 解释:输入数组表示数字 4321。 示例 3: 输入:digits = [0] 输出:[1] 提示: 1 <= digits.length <= 100 0 <= digits[i] <= 9 通过次数632,323提交次数1,400,461
时间: 2024-01-26 11:03:53 浏览: 126
以下是使用 Kotlin 编写的解法:
```kotlin
fun plusOne(digits: IntArray): IntArray {
for (i in digits.size - 1 downTo 0) {
if (digits[i] < 9) {
digits[i]++
return digits
}
digits[i] = 0
}
val result = IntArray(digits.size + 1)
result[0] = 1
return result
}
```
该函数接收一个整数数组 `digits`,并返回一个新的整数数组,将 `digits` 所表示的非负整数加一。
具体实现是从数组的最后一位开始遍历,如果当前位的数字小于 9,则将该位加一并返回结果;否则将该位设为 0,继续遍历下一位。如果遍历完整个数组仍然没有返回结果,则说明需要进位,在结果数组的最高位加一即可。
相关问题
使用kotlin解决这个问题:258. 各位相加 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。 示例 1: 输入: num = 38 输出: 2 解释: 各位相加的过程为: 38 --> 3 + 8 --> 11 11 --> 1 + 1 --> 2 由于 2 是一位数,所以返回 2。 示例 2: 输入: num = 0 输出: 0
以下是使用 Kotlin 解决该问题的代码:
```kotlin
fun addDigits(num: Int): Int {
var n = num
while (n >= 10) {
var sum = 0
while (n > 0) {
sum += n % 10
n /= 10
}
n = sum
}
return n
}
```
思路:如果输入 num 小于 10,直接返回 num。否则,将 num 的各位数字相加,得到 sum,然后将 sum 赋值给 n,重复上述操作,直到 n 小于 10,返回 n。
例如,对于样例 1 中的 38,首先将其各位数字相加,得到 11,然后将 11 的各位数字相加,得到 2,最后返回 2。
使用kotlin完成这个题目:38. 外观数列 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = "1" countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。 前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 第一项是数字 1 描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 "11" 描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 "21" 描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 "1211" 描述前一项,这个数是 1211 即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ,记作 "111221"
以下是使用 Kotlin 实现的代码:
```kotlin
class Solution {
fun countAndSay(n: Int): String {
if (n == 1) {
return "1"
}
val prev = countAndSay(n - 1)
var count = 1
var result = StringBuilder()
for (i in 1 until prev.length) {
if (prev[i] == prev[i - 1]) {
count++
} else {
result.append(count).append(prev[i - 1])
count = 1
}
}
result.append(count).append(prev.last())
return result.toString()
}
}
```
我们使用递归的方式实现外观数列。当 `n` 等于 1 时,返回字符串 "1"。否则,我们递归调用 `countAndSay(n-1)` 获取前一项的字符串,然后对其进行描述,得到当前项的字符串。
我们使用 `count` 变量记录当前数字的出现次数,使用 `result` 变量记录当前项的字符串。遍历前一项的字符串,如果当前字符等于上一个字符,则增加 `count` 的值;否则,将上一个数字的出现次数和数字本身加入到 `result` 变量中,并将 `count` 的值重置为 1。最后,我们需要将最后一个数字的出现次数和数字本身加入到 `result` 变量中,并将其转换为字符串返回。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)