66. 加一
解题过程
INFO
题目链接 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头
javascript
/**
* @link https://leetcode.cn/problems/plus-one/
* @title 66. 加一
* @description 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头
* @param {number[]} digits
* @return {number[]}
*/
// 解法一
// 思路:将数组转数字累加之后再转数组
var plusOne = function (digits) {
let num = BigInt(digits.join(''))
num++
return (num + '').split('').map(Number)
};
// 解法二
// 思路:通过数组最后元素计算加一计算即可,如果是 9 的数字进行置换为 0,如果不是则累加返回
var plusOne = function (digits) {
for (let i = digits.length - 1; i >= 0; i--) {
if (digits[i] === 9) {
digits[i] = 0
} else {
digits[i]++
return digits
}
}
// 全是 9 的数字重新生成新的数字数组
return [1, ...digits]
}
// const result = plusOne([1, 2, 3]) // [1,2,4]
// const result = plusOne([4, 3, 2, 1]) // [4,3,2,2]
// const result = plusOne([0]) // [1]
// const result = plusOne([9]) // [1, 0]
// const result = plusOne([9, 9]) // [1, 0, 0]
const result = plusOne([6, 1, 4, 5, 3, 9, 0, 1, 9, 5, 1, 8, 6, 7, 0, 5, 5, 4, 3]) // [6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,4]
console.log(result)
解题感受
优质题解
- https://leetcode.cn/problems/plus-one/solution/jia-yi-by-leetcode-solution-2hor/
- https://leetcode.cn/problems/plus-one/solution/hua-jie-suan-fa-66-jia-yi-by-guanpengchn/
- https://leetcode.cn/problems/plus-one/solution/by-alex-pang-b2v4/
- https://leetcode.cn/problems/plus-one/solution/typescriptjiu-shi-jian-dan-de-shu-xue-52-acwh/