给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
思路:从最后一位看,若不为9,则加1直接返回
若为9,则本位设为0,继续遍历前一个数;
若跳出for循环,则说明数组中全设为了0;
则新建长度+1的新数组,并将第一个数设为1,最终返回这个新数组即可
1 class Solution { 2 public int[] plusOne(int[] digits) { 3 for(int i=digits.length-1;i>=0;i--){ 4 if(digits[i]!=9){ 5 digits[i]++; 6 return digits; 7 } 8 digits[i]=0; 9 } 10 int tmp[]=new int[digits.length+1]; 11 tmp[0]=1; 12 return tmp; 13 } 14 }
C++代码:
1 class Solution { 2 public: 3 vector<int> plusOne(vector<int>& digits) { 4 digits[digits.size()-1]++; 5 for(int i=digits.size()-1;i>=0;i--){ 6 if(digits[i]==10){ 7 digits[i]=0; 8 if(i==0){ 9 digits.insert(digits.begin(),1); 10 } 11 else{ 12 digits[i-1]++; 13 } 14 }else 15 return digits; 16 } 17 return digits; 18 } 19 };