描述
给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照数位高低进行排列,最高位的数在列表的最前面。
您在真实的面试中是否遇到过这个题?
是
样例
给定 [1,2,3]
表示 123, 返回 [1,2,4]
.
给定 [9,9,9]
表示 999, 返回 [1,0,0,0]
.
注意:数据类型范围的问题
class 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
vector<int> m_vector;
++digits[digits.size() - 1];
stack<int> m_stack;
for (int i = digits.size() - 1; i >= 1; i--) {
m_stack.push(digits[i] % 10);
digits[i - 1] += digits[i] / 10;
}
m_stack.push(digits[0] % 10);
if (digits[0]>9) {
m_stack.push(digits[0] / 10);
}
while(!m_stack.empty()) {
m_vector.push_back(m_stack.top());
m_stack.pop();
}
return m_vector;
}
};