LeetCode刷题笔记(Java版)----66、加一

66、加一

描述:

解法1:从数组中的末尾开始遍历,加1后判断是否大于10,大于则取余数,进位设为1;小于则进位设为0;遍历完如果进位为1的话需要在原始的数组的头部进位,解决办法是创建一个length+1的新数组,将第一个元素设置为1后,后面的元素整体copy进行加1处理后的原始数组。

执行用时: 1 ms, 61.85% 。内存消耗: 20.5 MB, 72.64% 。

class Solution {
    public int[] plusOne(int[] digits) {
        int add = 1;
        for(int i=digits.length-1;i>=0;i--){
            digits[i] += add;
            if(digits[i]>=10){
                digits[i] -= 10;
                add=1;
            }else{
                add = 0;
                break;
            }
        }
        if(add==1){
            int[] result = new int[digits.length+1];
            result[0] = 1;
            System.arraycopy(digits,0,result,1,digits.length);
            return result;
        }else{
            return digits;
        }
    }
}

 

你可能感兴趣的:(Algorithm)