Leetcode: Plus One

Given a number represented as an array of digits, plus one to the number.

比较简单,写的时候有点担心全部为9时的时间复杂度,不过通过了。

class Solution {
public:
    vector<int> plusOne(vector<int> &digits) {
        int size = digits.size();
        if (size == 0) return digits;
        
        if (digits[size-1] != 9) {
            digits[size-1] += 1;
        }
        else {
            int last_not_nine = size - 2;
            while (last_not_nine >= 0 && digits[last_not_nine] == 9) {
                --last_not_nine;
            }
            if (last_not_nine >= 0) {
                ++digits[last_not_nine];
            }
            else {
                digits.resize(size+1);
                digits[0] = 1;
                ++last_not_nine;
                ++size;
            }
            for (++last_not_nine; last_not_nine < size; ++last_not_nine) {
                digits[last_not_nine] = 0;
            }
        }
        
        return digits;
    }
};

===========================第二次=========================

直观的方法。

class Solution {
public:
    vector<int> plusOne(vector<int> &digits) {
        int i = digits.size() - 1;
        for (; i >= 0; --i) {
            if (digits[i] != 9) {
                ++digits[i];
                break;
            }
            else {
                digits[i] = 0;
            }
        }
        
        if (i < 0) {
            digits.insert(digits.begin(), 1);
        }
        
        return digits;
    }
};


你可能感兴趣的:(LeetCode)