加一

来源:互联网 发布:淘宝上卖nb鞋的店铺 编辑:程序博客网 时间:2024/04/28 11:19

描述

给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。

该数字按照大小进行排列,最大的数在列表的最前面。

样例

给定 [1,2,3] 表示 123, 返回 [1,2,4].

给定 [9,9,9] 表示 999, 返回 [1,0,0,0].

思考

  1. 尾数 < 9, 直接加一即可
  2. 尾数 = 9, 需要考虑首位是否存在加一的情况

代码

//  By Lentitudeclass Solution {public:    /**     * @param digits a number represented as an array of digits     * @return the result     */    vector<int> plusOne(vector<int>& digits) {        // Write your code here        // digits >= 0        if (digits.empty()){            return digits;        }        int len = digits.size();        int i = len - 1;        // 如果尾数 < 9 ,则直接 +1 返回        if (digits[i] < 9){            digits[i]++;            return digits;        }else{            // 如果尾数 = 9, 则进行加一处理            while (i > 0){                digits[i--] = 0;                if (digits[i] < 9 ){                    digits[i]++;                    return digits;                }            }            // 对首位需要判断是否存在进位的情况            if (digits[0] < 9){                digits[0]++;                return digits;            }else{                vec.push_back(1);                digits[0] = 0;                vec.insert(vec.begin()+1, digits.begin(), digits.end());                return vec;            }        }    }private:    vector<int> vec;};
0 0
原创粉丝点击