#include <stdlib.h>
#include <string.h>
int *plusOne(int *digits, int digitsSize, int *returnSize) {
int *res = malloc(sizeof(int) * (digitsSize + 1));
memcpy(res + 1, digits, sizeof(int) * digitsSize);
for (int i = digitsSize; i >= 1; i--) {
if (res[i] < 9) {
res[i]++;
*returnSize = digitsSize;
memmove(res, res + 1, sizeof(int) * digitsSize);
return res;
}
res[i] = 0;
}
res[0] = 1;
*returnSize = digitsSize + 1;
return res;
}
#include <vector>
using namespace std;
class Solution {
public:
vector<int> plusOne(vector<int> &digits) {
for (int i = digits.size() - 1; i >= 0; i--) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
digits.insert(digits.begin(), 1);
return digits;
}
};
package mathgeometry
func plusOne(digits []int) []int {
for i := len(digits) - 1; i >= 0; i-- {
if digits[i] < 9 {
digits[i]++
return digits
}
digits[i] = 0
}
return append([]int{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[] res = new int[digits.length + 1]; // the rest is already all zeros
res[0] = 1;
return res;
}
}
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function (digits) {
for (let i = digits.length - 1; i >= 0; i--) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
digits.unshift(1);
return digits;
};
from typing import List
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] + digits
impl Solution {
pub fn plus_one(mut digits: Vec<i32>) -> Vec<i32> {
for d in digits.iter_mut().rev() {
if *d < 9 {
*d += 1;
return digits;
}
*d = 0;
}
digits.insert(0, 1);
digits
}
}