LandscapeMi

landscapemi的博客

Leetcode_c++:Plus one(066)

题目

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

The digits are stored such that the most significant digit is at the head of the list.

//给一个用数组表示的数,加1后还是数组表示


算法

复杂度:O(N)
// 从右往左,如果到[0] 位还有进位,则需要(n.length_1)的数组


class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        vector<int> tp(digits), ret;
        // 最低位加1
        tp[tp.size()-1]++;
        //  从低位到高位检查每一位是否需要进位
        for(int i=tp.size()-1;i>0;i--)
            if(tp[i]>=10){
                tp[i]%=10;
                tp[i-1]++;

            }else break;

            //若最高位需要进位,需要在vector 加一个元素
            if(tp[0]>=10){
                ret.push_back(1);
                tp[0]%=10;
            }

        // 从最高位到低位依次将每个元素存入ret
        for(int i=0;i!=(int)tp.size();++i)
            ret.push_back(tp[i]);

        return ret;

    }
};
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mijian1207mijian/article/details/51560242
个人分类: leetcode(c++)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Leetcode_c++:Plus one(066)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭