首页 > 其他 > 详细

力扣(LeetCode)加一 个人题解

时间:2019-02-19 23:34:40      阅读:286      评论:0      收藏:0      [点我收藏+]

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

示例 2:

输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。



这道题是比较简单的,因为只加一,所以只有遇到当前位数为9的时候才会产生进位,遇到非9直接结束判断。

具体的做法是,从末位向前判断当前位置是否为9,如果是9,则置零,继续循环。如果不是9,则加一,结束循环,因为已经得到正确答案了。

特别地,当最前面的一位为9,加一变成0后,需要改变数组的长度在最前面补1 才是正确答案。

 

代码如下:

class Solution {
    public int[] plusOne(int[] digits) {
        int[] ans;
        for (int i = digits.length - 1; i >= 0; i--) {
            if (digits[i] == 9) {
                digits[i] = 0;
            } else {
                digits[i] += 1;
                return digits;
            }

        }
        if (digits[0] == 0) {
            ans = new int[digits.length + 1];
            ans[0] = 1;
            int t = 0;
            for (int i : digits) {
                ans[++t] = i;
            }
        }
        return digits;
    }
}

 

力扣(LeetCode)加一 个人题解

原文:https://www.cnblogs.com/axiangcoding/p/10404049.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!