Friday, February 22, 2013

Plus One

/*
Plus One
Given a number represented as an array of digits, plus one to the number.
*/
class Solution {
public:
    vector<int> plusOne(vector<int> &digits) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        int size = digits.size();
        if(size==0) {
          digits.push_back(1);
          return digits;
        }
       
        bool plus = false;
        vector<int>::reverse_iterator rit = digits.rbegin();
        *rit = *rit+1;
       
        if(*rit==10) {
           *rit = 0;
           plus = true;
        }
       
        rit++;
        
        while(rit!=digits.rend()&&plus){
          *rit = *rit+1;
          if(*rit==10){
           *rit = 0;
           plus = true;
          } else{
            plus = false;
          }
          rit++;
        }
       
        if(plus) digits.insert(digits.begin(), 1);
       
        return digits;
    }
};

No comments:

Post a Comment