407-加一
给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照大小进行排列,最大的数在列表的最前面。样例
给定 [1,2,3] 表示 123, 返回 [1,2,4].
给定 [9,9,9] 表示 999, 返回 [1,0,0,0].标签
数组 谷歌
思路
模拟加法,从个位(数组最后一位)+1,若此位产生进位,继续向前一位加进位,若是最高位(数组第一位)还有进位,则插入新的最高位
code
class Solution {
public:
/*
* @param digits: a number represented as an array of digits
* @return: the result
*/
vector<int> plusOne(vector<int> digits) {
// write your code here
int size = digits.size();
if (size <= 0) {
return vector<int>();
}
int carry = 0;
digits[size - 1]++;
if (digits[size - 1] < 10) {
return digits;
}
carry = 1;
digits[size - 1] = 0;
for (int i = size - 2; i >= 0; i--) {
digits[i] = digits[i] + carry;
if (digits[i] > 9) {
carry = 1;
digits[i] = 0;
}
else {
carry = 0;
break;
}
}
if (carry == 1) {
digits.insert(digits.begin(), 1);
}
return digits;
}
};