66. Plus One
leetcode easy
Task
Вам дано большое число, представленное в виде массива целых чисел digits, где каждый элемент digits[i] — это i-я цифра числа. Цифры расположены в порядке от старшей к младшей слева направо. Большое число не содержит ведущих нулей.
Увеличьте большое число на один и верните результирующий массив цифр.
Пример:
Input: digits = [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.
Incrementing by one gives 123 + 1 = 124.
Thus, the result should be [1,2,4].
C# solution
matched/originalpublic class Solution {
public int[] PlusOne(int[] digits) {
int n = digits.Length;
for (int idx = n - 1; idx >= 0; --idx) {
if (digits[idx] == 9) {
digits[idx] = 0;
} else {
digits[idx]++;
return digits;
}
}
int[] newDigits = new int[n + 1];
newDigits[0] = 1;
return newDigits;
}
}C++ solution
auto-draft, review before submit#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public vector<int>& PlusOne(vector<int>& digits) {
int n = digits.size();
for (int idx = n - 1; idx >= 0; --idx) {
if (digits[idx] == 9) {
digits[idx] = 0;
} else {
digits[idx]++;
return digits;
}
}
vector<int>& newDigits = new int[n + 1];
newDigits[0] = 1;
return newDigits;
}
}Java solution
matched/originalclass Solution {
public int[] plusOne(int[] digits) {
int n = digits.length;
for (int idx = n - 1; idx >= 0; --idx) {
if (digits[idx] == 9) {
digits[idx] = 0;
} else {
digits[idx]++;
return digits;
}
}
digits = new int[n + 1];
digits[0] = 1;
return digits;
}
}JavaScript solution
matched/originalvar plusOne = function (digits) {
let n = digits.length;
for (let i = n - 1; i >= 0; --i) {
if (digits[i] == 9) {
digits[i] = 0;
} else {
digits[i]++;
return digits;
}
}
digits.unshift(1);
return digits;
};Python solution
matched/originalclass Solution:
def plusOne(self, digits: List[int]) -> List[int]:
n = len(digits)
for i in range(n):
idx = n - 1 - i
if digits[idx] == 9:
digits[idx] = 0
else:
digits[idx] += 1
return digits
return [1] + digitsGo solution
matched/originalfunc plusOne(digits []int) []int {
n := len(digits)
for i := n - 1; i >= 0; i-- {
if digits[i] == 9 {
digits[i] = 0
} else {
digits[i]++
return digits
}
}
digits = append([]int{1}, digits...)
return digits
}Explanation
Algorithm
1️⃣
Проходим по входному массиву, начиная с конца массива.
2️⃣
Устанавливаем все девятки на конце массива в ноль. Если мы встречаем цифру, не равную девяти, увеличиваем её на один. Работа выполнена — возвращаем массив цифр.
3️⃣
Мы здесь, потому что все цифры были равны девяти. Теперь они все установлены в ноль. Затем мы добавляем цифру 1 в начало остальных цифр и возвращаем результат.
😎