[LeetCode]66. 加一

给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。

最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

C++

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int n = digits.size();
        for (int i = n - 1; i >= 0; i--) {
            if (digits[i] == 9) digits[i] = 0;
            else {
                digits[i] += 1;
                return digits;
            }
        }
        if (digits.front() == 0) 
            digits.insert(digits.begin(), 1);
        return digits;
    }
};

C

/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int* plusOne(int* digits, int digitsSize, int* returnSize) {
    int *returns;int i;
    for (i = digitsSize - 1; i >= 0; i--) {
        if (digits[i] == 9) digits[i] = 0;
        else {
            digits[i] += 1;
            break;
        }
    }
    if (digits[0] == 0) {
        returns = malloc(sizeof(int)*(digitsSize + 1));
        returns[0] = 1;
        for (i = 0; i < digitsSize; i++)
            returns[i + 1] = digits[i];
        *returnSize = digitsSize + 1;
        return returns;
    }
    else {
        *returnSize = digitsSize;
        return digits;
    }
}

运行正确,时间超了o(╥﹏╥)o,先这样吧。。

参考来源https://www.cnblogs.com/grandyang/
原文地址:https://www.cnblogs.com/moonpie-sun/p/9419787.html