Leetcode 66 加一
题目描述
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
来源:力扣(LeetCode)
解题思路
解法一 从最后一位加一后依次往前进位 需要注意的是 可能比原先多出一位来
解法二 只有遇到9才会生进位 所以就找第一个不为9的数字加一 之后的9都变为0就好了
代码
解法一
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int temp = 1;
for(int i = digits.size()-1;i>=0;i--){
digits[i]+=temp;
temp = digits[i]/10;
digits[i]%=10;
if(temp == 0)
break;
}
if(temp!=0){
digits.insert(digits.begin(),1);
}
return digits;
}
};
解法二
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
for(int i = digits.size()-1;i>=0;i--){
if(digits[i] == 9){
digits[i] = 0;
}else{
digits[i]+=1;
return digits;
}
}
digits.insert(digits.begin(),1);
return digits;
}
};