领扣LintCode算法问题答案-407. 加一

领扣LintCode算法问题答案-407. 加一

目录

  • 407. 加一
  • 鸣谢

407. 加一

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

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

样例 1:

输入:[1,2,3]
输出:[1,2,4]

样例 2:

输入:[9,9,9]
输出:[1,0,0,0]

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;
        }
        if (digits[digits.length - 1] < 9) {
     
            digits[digits.length - 1] = digits[digits.length - 1] + 1;
            return digits;
        } else {
     
            boolean cFlag = false;
            for (int i = digits.length - 1; i >= 0; i--) {
     
                int num = digits[i];
                if (num == 9) {
     
                    digits[i] = 0;
                    cFlag = true;
                } else {
     
                    digits[i] = num + 1;
                    cFlag = false;
                    break;
                }
            }
            if (cFlag) {
     
                int[] ret = new int[digits.length + 1];
                ret[0] = 1;
                System.arraycopy(digits, 0, ret, 1, digits.length);
                return ret;
            } else {
     
                return digits;
            }
        }
    }
}

原题链接点这里

鸣谢

非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

你可能感兴趣的:(算法,算法)