407. +1

题目

给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。

该数字按照数位高低进行排列,最高位的数在列表的最前面。

http://www.lintcode.com/zh-cn/problem/plus-one/

分析

模拟加法器,注意进位的时候首位溢出即可。

代码


public class Solution {
    /**
     * @param digits: a number represented as an array of digits
     * @return: the result
     */
    public int[] plusOne(int[] digits) {
        // write your code here
        if (digits == null || digits.length < 1) return digits;
        
        int inc = 1;
        for(int i = digits.length - 1; i >= 0; i--) {
            digits[i] = digits[i] + inc;
            inc = 0;
            if (digits[i] == 10) {
                digits[i] = 0;
                inc = 1;
            }
        }
        
       
        if(inc == 0) {
            return digits;
        } else {
            int n[] = new int[digits.length + 1];
            n[0] = inc;
            for(int i=1; i < n.length; i++) {
                n[i] = digits[i-1];
            }
            return n;
        }
    }
}
Show Comments

Get the latest posts delivered right to your inbox.