提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
题目:
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。
分析如下:
分析
将问题转换为逆序遍历,搜索数组中第一个置不为9的索引 index,并将index到尾部的所有元素置0.
for (index =nums.size()-1; index>=0; index --){
if (nums[index] ==9){
nums[index] = 0;
}else{
nums[index] ++;
break;
}
最后处理当index=0的特殊情况:
if (nums[0] == 0){
num.insert(nums.begin,1);
}
代码:
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int n= digits.size();
while(n && ++digits[--n] == 10){
digits[n] = 0;
}
if(digits[0] == 0) digits.insert(begin(digits), 1);
return digits;
}
};
总结
不管是简单题还是难题,最好都抽象成统一模型。