Add One to a Big Integer Stored as Digits
Problem
An array digits holds a non-negative integer with the most significant digit first (no leading zeros except the number 0 itself). Return an array representing the integer digits + 1.
Input
digits = [9,9,9]Output
[1,0,0,0]Walk right-to-left. If the digit is < 9, increment and stop. Otherwise set it to 0 and keep going. If the carry propagates past the front, prepend a 1.
def plus_one(digits):
for i in range(len(digits) - 1, -1, -1):
if digits[i] < 9:
digits[i] += 1
return digits
digits[i] = 0
return [1] + digits
function plusOne(digits) {
for (let i = digits.length - 1; i >= 0; i--) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
return [1, ...digits];
}
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[] out = new int[digits.length + 1];
out[0] = 1;
return out;
}
}
vector<int> plusOne(vector<int>& digits) {
for (int i = (int) digits.size() - 1; i >= 0; i--) {
if (digits[i] < 9) { digits[i]++; return digits; }
digits[i] = 0;
}
digits.insert(digits.begin(), 1);
return digits;
}