66. Plus One

LeetCode easy original: C# #array #csharp #easy #leetcode
選択した UI 言語に合わせて問題文をロシア語から翻訳します。コードは変更しません。

Вам given большое number, представленное в виде 配列а целых чисел digits, где каждый element digits[i] — это i-я цифра числа. Цифры расположены в порядке от старшей к младшей слева направо. Большое number не содержит ведущих нулей.

Увеличьте большое number на один и return результирующий 配列 цифр.

例:

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# 解法

照合済み/オリジナル
public 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++ 解法

自動ドラフト、提出前に確認
#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 解法

照合済み/オリジナル
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;
            }
        }

        digits = new int[n + 1];
        digits[0] = 1;
        return digits;
    }
}

JavaScript 解法

照合済み/オリジナル
var 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 解法

照合済み/オリジナル
class 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] + digits

Go 解法

照合済み/オリジナル
func 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
}

Algorithm

1️⃣

Проходим по 入力ному 配列у, начиная с конца 配列а.

2️⃣

Устанавливаем все девятки на конце 配列а в ноль. Если мы встречаем цифру, не равную девяти, увеличиваем её на один. Работа выполнена — возвращаем 配列 цифр.

3️⃣

Мы здесь, потому что все цифры были равны девяти. Теперь они все установлены в ноль. Затем мы добавляем цифру 1 в начало остальных цифр и возвращаем результат.

😎

Vacancies for this task

有効な求人 with overlapping task tags are 表示.

すべての求人
有効な求人はまだありません。