class Solution { public: vector plusOne(vector& digits) { int carry = 1; for (int i = digits.size()-1; (i >= 0) && (carry == 1); --i) { const int sum = digits[i] + carry; digits[i] = sum % 10; carry = (sum >= 10) ? 1 : 0; } if (carry == 1) { // Overflow. digits.resize(digits.size() + 1); // Shift right. for (size_t i = digits.size()-1; i > 0; --i) { digits[i] = digits[i-1]; } digits[0] = 1; } return digits; } };