[Leetcode 66, Easy] Plus One

来源:互联网 发布:如何查mac air數據 编辑:程序博客网 时间:2024/06/04 18:12

Problem:

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

Analysis:

本题的解法实现一般加法的规则。要点是模拟满10进1的规则。进位分两种情况:某一位数字不是9,以及所有的数字都是9。用一个循环从最后一位开始循环,直到遇到不是9的数字或者指标变成-1。对于第二种情况,需要在原序列头部插入一个1。

算法时间复杂性是O(n),空间复杂性是O(1)。

Soutions:

C++:

    vector<int> plusOne(vector<int>& digits)     {        if(digits.empty()) {            digits.push_back(1);            return digits;        }                int last_index = digits.size() - 1;        for(; last_index >= 0; --last_index) {            digits[last_index] += 1;            if(digits[last_index] < 10)                 break;                            digits[last_index] = 0;        }                if(last_index == -1)            digits.insert(digits.begin(), 1);                return digits;    }