66. Plus One

来源:互联网 发布:中文翻译拼音拍摄软件 编辑:程序博客网 时间:2024/05/20 23:02

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.



机智的解法

class Solution {public:void plusone(vector<int> &digits){    int n = digits.size();    for (int i = n - 1; i >= 0; --i)    {        if (digits[i] == 9)        {            digits[i] = 0;        }        else        {            digits[i]++;            return;        }    }        digits[0] =1;        digits.push_back(0);}    vector<int> plusOne(vector<int>& digits) {        plusone(digits);        return digits;    }};



传统解法,先把整个vector逆序,然后从第一个元素(即最低位)开始加一,如果最后进位标志是1,则在最后补上1,然后将整个vector再逆序。

class Solution {public:    vector<int> plusOne(vector<int>& digits) {        if(digits.empty())            return digits;        reverse(digits.begin(),digits.end());        int val = digits[0] + 1;        int carry = val/10;        val = val%10;        digits[0] = val;                int i = 1;        while(carry>0 && i<digits.size())        {            val = digits[i]+carry;            carry = val/10;            val = val%10;            digits[i] = val;            ++i;        }                if(carry>0 && i == digits.size())        {            digits.push_back(1);        }        reverse(digits.begin(),digits.end());                return digits;    }};


0 0
原创粉丝点击