给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 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/