LeetCode 66. Plus One

问题链接

LeetCode 66. Plus One

题目解析

给出一个非负向量,代表一个数字,最高位在头,最低位在尾,返回其加一之后的数字向量。

解题思路

由于返回值要求是一个数字向量,那就没有必要把向量转化成真的数字来计算。一般情况下,从向量尾开始判断:
如果为9,那么进位,变为0,观察上一位;否则加1返回。在每一位上都是如此。

特殊情况:一直可以进位,直到最高位。这个时候应该退出循环,说明答案就是10^len,当然得是向量形式。

参考代码

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

LeetCode All in One题解汇总(持续更新中...)

本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.


posted @ 2018-03-18 21:02  AlvinZH  阅读(187)  评论(0编辑  收藏  举报