leetcode:Plus One (加一)【面試演算法題】
阿新 • • 發佈:2019-02-12
題目: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.csdn.net/havenoidea/