给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。示例 2:
输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。C++用时0ms,但占用内存过大
class Solution { public: vector<int> plusOne(vector<int>& digits) { int i=digits.size(); if(digits[i-1]!=9) { digits[i-1]+=1; return digits; } while(digits[i-1]>=9) { if(i==1) { digits[i-1]=1; digits.push_back(0); return digits; } digits[i-1]=0; digits[i-2]+=1; i--; if(digits[i-1]==9) return digits; } return digits; } };C++用时4ms,占用内存一般
class Solution { public: vector<int> plusOne(vector<int>& digits) { digits.back()+=1; for(int i=digits.size()-1;i>=0;i--) { if(digits[i]==10) { if(i==0) { digits[i]=1; digits.push_back(0); return digits; } digits[i]=0; digits[i-1]+=1; } } return digits; } };