66.加一
Posted maeryouyou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了66.加一相关的知识,希望对你有一定的参考价值。
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1: |
---|
输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 |
?
示例 2: |
---|
输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。 |
?
?
这题挺简单的,就是当digits[0]=10的时候需要扩展一下空间。
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int size = digits.size();
digits[size-1]++;
for(int i = digits.size()-1; i>0; i--)
if(digits[i] == 10) {
digits[i]=0;
digits[i-1]++;
}
if(digits[0] == 10){
digits.resize(size+1);
for(int j = size; j>0; j--)
digits[j] = digits[j-1];
digits[0] = 1;
digits[1] = 0;
}
return digits;
}
};
上面是我的写法,在扩展空间那儿有些复杂了,其实可以用insert直接插入。
是我傻了。
像下面这样。
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int size = digits.size();
digits[size-1]++;
for(int i = digits.size()-1; i>0; i--)
if(digits[i] == 10) {
digits[i]=0;
digits[i-1]++;
}
if(digits[0] == 10){
digits.insert(digits.begin(), 1);
digits[1] = 0;
}
return digits;
}
};
以上是关于66.加一的主要内容,如果未能解决你的问题,请参考以下文章