问题:
给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照数位高低进行排列,最高位的数在列表的最前面。
样例:
样例 1:
输入:[1,2,3] 输出:[1,2,4]
样例 2:
输入:[9,9,9] 输出:[1,0,0,0]
python:
class Solution:
"""
@param digits: a number represented as an array of digits
@return: the result
"""
def plusOne(self, digits):
# write your code here
if len(digits) == 0:
return [1]
result = []
for i in range(len(digits)-1, -1, -1):
flag = 0
num = (digits[i]+1)%10
result.insert(0,num)
flag = (digits[i]+1) // 10
if flag != 1:
result = digits[:i] + result
return result
if flag == 1:
result.insert(0, 1)
return result
C++:
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
if(digits.size() == 0)
{
digits.push_back(1);
return digits;
}
vector<int> result;
int flag = 0;
for(int i = digits.size()-1; i > -1; i--)
{
flag = 0;
int num = (digits[i]+1) % 10;
result.insert(result.begin(), num);
flag = (digits[i]+1) / 10;
if(flag != 1)
{
result.insert(result.begin(), digits.begin(), digits.begin()+i);
return result;
}
}
if(flag == 1)
{
result.insert(result.begin(), 1);
return result;
}
}
};