Given a number represented as an array of digits, plus one to the number.
class Solution { public: vector<int> plusOne(vector<int> &digits) { int len = digits.size(); int i; int a[len+1]; memset(a,0,sizeof(a)); int carry = 1; for(i=0;i<len;i++) { a[len-i] += (carry + digits[len-i-1])%10; carry = (carry + digits[len-i-1])/10; } if(carry == 0) { for(i=0;i<len;i++) digits[i] = a[i+1]; return digits; } else { a[0] = 1; for(i=0;i<len;i++) digits[i] = a[i]; digits.push_back(a[len]); return digits; } } };