加一
给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照大小进行排列,最大的数在列表的最前面。
样例
给定 [1,2,3]
表示 123, 返回 [1,2,4]
.
给定 [9,9,9]
表示 999, 返回 [1,0,0,0]
.
分析:这道题的方法是很简洁的一种方法。在原数组的基础上进行修改。因为要加1,所以第一次进入循环先判断当前位是不是9,如果是置0,否则加1直接返回,其他位不用计算。如果为9置0后,判断前一位是不是9,如果是同样置0,因此此时有个后边位进的1要加,不是9同上加1返回。以此类推。到循环执行换后判断首位是否为0,为0则说明进1了插入一个1.
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 plus=0;
for(int i=digits.size()-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;
}
};