您的位置:首页 > 其它

[Leetcode 66, Easy] Plus One

2013-11-07 06:50 381 查看
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;
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: