加一
给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照大小进行排列,最大的数在列表的最前面。
您在真实的面试中是否遇到过这个题?
Yes
样例
给定 [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> res;
if (digits.empty()) {
return res;
}
int len = digits.size();
long num = ;
for (int i = ; i < len; i++) {
num = num * + digits[i];
}
num = num + ;
while (num) {
int temp = num % ;
res.push_back(temp);
num = num / ;
}
reverse(res.begin(), res.end());
return res;
}
};
第二种方法:
class Solution
{
public:
/**
* @param digits a number represented as an array of digits
* @return the result
*/
vector<int> plusOne(vector<int>& digits)
{
int c = ; for (int i = digits.size() - ; i >= ; i--)
{
digits[i] = digits[i] + c;
c = digits[i]/;
digits[i] %= ;
} if (c > )
{
vector<int> temp(digits.size()+, );
temp[] = c;
for (int i = ; i < temp.size(); i++)
{
temp[i] = digits[i - ];
}
return temp;
} else
{
return digits;
}
}
};