是一道我会的这个题哈哈哈!来吧!
题目描述
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
题目思路
我觉得这个题就是数组里面存的是一个整数的每一位,然后在此基础上加一。
一共有三种情况
- 类似于123这种单纯的加一(我喜欢);
- 类似于79这种需要进位但不会引起长度的变化;
- 最后就是类似999这样,不仅要进位还要增加长度。
看每一位是否需要进位,不需要进位就说明结束了返回即可;
若需要进位就一直向前进位,最后看第一位需不需要是不是得进位,进位就得插入元素1了
代码
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int j = digits.size()-1;
digits[j]++;
while (j > 0)
{
if (digits[j] != 10)
{
return digits;
}//放前面,先判断,不需要,则返回(freestyle!)
else
{
digits[j] = 0;
digits[j-1]++;
}
j--;
}
if (digits[0] == 10)
{
digits.insert(digits.begin(), 1);
digits[1] = 0;
}
return digits;
}
};
嗯!是我会的思路!还得去推导一下那个贝祖等式55555