Fastest and simplest C++ solution
class Solution {\n    public:\n        vector<int> plusOne(vector<int> &digits) {\n            int i,j,carry=1;\n            // traditional long addition..\n   
    class Solution {\n    public:\n        vector<int> plusOne(vector<int> &digits) {\n            int i,j,carry=1;\n            // traditional long addition..\n            for(i=digits.size()-1;i>=0&&carry;i--){\n                int sum=carry+digits[i];\n                carry=sum/10;\n                digits[i]=sum%10;\n            }\n            if(carry){ // if carry is 1, then digits must be all 99..999\n                digits[0]=1;\n                digits.push_back(0);\n            }\n            return digits;\n        }\n    };
[]