「力扣」第 66 题:加 1


「力扣」第 66 题:加 1

链接:https://leetcode-cn.com/problems/plus-one

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

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

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

示例 1:

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

示例 2:

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

思路:注意可以提前终止

Java 代码:

class Solution {
    public int[] plusOne(int[] digits) {
        int len = digits.length;
        if (len == 0) {
            return new int[0];
        }
        int carry = 1;
        for (int i = len - 1; i >= 0; i--) {
            int sum = digits[i] + carry;
            digits[i] = sum % 10;
            carry = sum / 10;
            // 如果不产生进位,马上就可以返回了
            if (carry == 0) {
                return digits;
            }
        }
        if (carry == 1) {
            int[] res = new int[len + 1];
            res[0] = 1;
            for (int i = 1; i < len + 1; i++) {
                res[i] = digits[i - 1];
            }
            return res;
        }
        return digits;
    }
}

Python 代码:

class Solution(object):
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """

        n = len(digits)
        if n == 0:
            return None
        # 从后向前
        for index in range(n - 1, -1, -1):
            if digits[index] < 9:
                digits[index] += 1
                return digits
            else:
                digits[index] = 0
        return [1] + digits

(本节完)


文章作者: liweiwei1419
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liweiwei1419 !
评论
 上一篇
「力扣」第 67 题:二进制加法 「力扣」第 67 题:二进制加法
「力扣」第 67 题:二进制加法 链接:https://leetcode-cn.com/problems/add-binary 题解链接:https://leetcode-cn.com/problems/add-binary/soluti
下一篇 
「力扣」第 41 题:缺失的第一个正数 「力扣」第 41 题:缺失的第一个正数
「力扣」第 41 题:缺失的第一个正数题解地址:桶排序 + 基于“异或运算”交换两个变量的值(Python 代码、Java 代码)。 说明:文本首发在力扣的题解版块,更新也会在第 1 时间在上面的网站中更新,这篇文章只是上面的文章的一个快照
  目录