LeetCode 66: Plus One (Carry Simulation)
LeetCode 66Source: https://leetcode.com/problems/plus-one/
English
Traverse from the last digit. If current digit is less than 9, increase it and return immediately. If it is 9, set it to 0 and continue carrying left. If all digits were 9, create a new array with leading 1.
class Solution {
public int[] plusOne(int[] digits) {
for (int i = digits.length - 1; i >= 0; i--) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
int[] ans = new int[digits.length + 1];
ans[0] = 1;
return ans;
}
}func plusOne(digits []int) []int {
for i := len(digits) - 1; i >= 0; i-- {
if digits[i] < 9 {
digits[i]++
return digits
}
digits[i] = 0
}
ans := make([]int, len(digits)+1)
ans[0] = 1
return ans
}class Solution {
public:
vector plusOne(vector& digits) {
for (int i = (int)digits.size() - 1; i >= 0; --i) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
vector ans(digits.size() + 1, 0);
ans[0] = 1;
return ans;
}
}; class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
for i in range(len(digits) - 1, -1, -1):
if digits[i] < 9:
digits[i] += 1
return digits
digits[i] = 0
return [1] + [0] * len(digits)var plusOne = function(digits) {
for (let i = digits.length - 1; i >= 0; i--) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
const ans = new Array(digits.length + 1).fill(0);
ans[0] = 1;
return ans;
};中文
从最低位开始处理进位。如果当前位小于 9,直接加一并返回。如果是 9,就变成 0 并继续向左进位。若全部都是 9,则结果长度加一,最高位是 1。
class Solution {
public int[] plusOne(int[] digits) {
for (int i = digits.length - 1; i >= 0; i--) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
int[] ans = new int[digits.length + 1];
ans[0] = 1;
return ans;
}
}func plusOne(digits []int) []int {
for i := len(digits) - 1; i >= 0; i-- {
if digits[i] < 9 {
digits[i]++
return digits
}
digits[i] = 0
}
ans := make([]int, len(digits)+1)
ans[0] = 1
return ans
}class Solution {
public:
vector plusOne(vector& digits) {
for (int i = (int)digits.size() - 1; i >= 0; --i) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
vector ans(digits.size() + 1, 0);
ans[0] = 1;
return ans;
}
}; class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
for i in range(len(digits) - 1, -1, -1):
if digits[i] < 9:
digits[i] += 1
return digits
digits[i] = 0
return [1] + [0] * len(digits)var plusOne = function(digits) {
for (let i = digits.length - 1; i >= 0; i--) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
const ans = new Array(digits.length + 1).fill(0);
ans[0] = 1;
return ans;
};
Comments