leetcode:Plus One (添一)【面试算法题】
leetcode:Plus One (加一)【面试算法题】
题目:Given a number represented as an array of digits, plus one to the number.
题意动态数组存了一些个位数字,组成一个大数,计算这个大数加一之后的值。
模拟大数的加法,当没有进位的时候就可以弹出循环。
特殊考虑各个位数就是9的情况,加一后会多出一位,即结果是1加上len个0,len是digits的长度。
class Solution { public: vector<int> plusOne(vector<int> &digits) { int i,p,temp,len=digits.size(); for(i=0;i<len;++i) { if(digits[i]!=9)break; } if(i==len) { vector<int>result; result.push_back(1); for(i=0;i<len;++i)result.push_back(0); return result; } digits[len-1]+=1; p=0; for(i=len-1;i>=0;--i) { temp=digits[i]+p; digits[i]=temp%10; p=temp/10; if(p==0)break; } return digits; } }; // http://blog.****.net/havenoidea/