关闭

Leetcode_c++:Plus one(066)

76人阅读 评论(0) 收藏 举报
分类:

题目

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;

    }
};
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:125440次
    • 积分:6907
    • 等级:
    • 排名:第3581名
    • 原创:589篇
    • 转载:2篇
    • 译文:0篇
    • 评论:2条
    最新评论