Wednesday, January 17, 2018

[2018-Interview] Plus One

Original question: https://leetcode.com/problems/plus-one/description/

Answer: Simple question. My code can be easily improved, like using less space, reducing lines. Not every interested in improving it as question is too simple. Answer from other blogs: http://www.cnblogs.com/grandyang/p/4079357.html



class Solution {
    public int[] plusOne(int[] digits) {
        if (digits == null || digits.length < 1) {
            return new int[0];
        }
        int[] addOneResult = new int[digits.length + 1];
        int nextLevel = 0;
        for (int i = addOneResult.length - 1; i >= 0; i--) {
            int addOneSum = 0;
            if (i == 0) {
                addOneResult[i] = nextLevel;
                break;
            }
            if (i == addOneResult.length - 1) {
                addOneSum = digits[i - 1] + 1;
            } else {
                addOneSum = digits[i - 1] + nextLevel;
            }
            nextLevel = addOneSum / 10;
            addOneResult[i] = addOneSum % 10;
        }
        if (nextLevel != 0) {
            return addOneResult;
        } else {
            int [] result = new int[digits.length];
            for (int i = 0; i < digits.length; i ++) {
                result[i] = addOneResult[i + 1];
            }
            return result;
        }
    }
}

No comments:

Post a Comment