现在的位置: 首页 > 综合 > 正文

plus One

2019年07月26日 ⁄ 综合 ⁄ 共 494字 ⁄ 字号 评论关闭

题意:给定一个大数,这个大数的每一位数字由一个数组存储。给这个大数加1,输出加1后的数据。

思路:将容器向右扩大1位,作为临时存储空间。设置flag为进位标志,将flag与该位相加,结果存储在右移一位。难点在于,如果最高位为9,同时又有进位,则需要向前进一。例如999,则需要4个空间存储。

class Solution {
public:
    vector<int> plusOne(vector<int> &digits) {
        int n = digits.size() + 1;
        digits.resize(n);
        int flag = 1;  //进位标志,1为进位,0为不进位 
        int i;
        vector<int> aa;
        for(i=n-2; i>=0; i--)
        {
            if (flag + digits[i] == 10)
            {
                digits[i+1] = digits[i] + flag - 10;
                flag = 1;
            }  
            else 
            {
                digits[i+1] = digits[i] + flag;
                flag = 0;
            }      
        } 
        digits[0] = flag;
        i = ((flag == 0) ? 1 : 0);
        for(; i < n; i++)
        {
            aa.push_back(digits[i]);
        }   
        return aa;
    }
};

【上篇】
【下篇】

抱歉!评论已关闭.