66. 加一

作者: 第四单元 | 来源:发表于2018-04-01 11:04 被阅读68次

题目

给定一个非负整数组成的非空数组,给整数加一。

可以假设整数不包含任何前导零,除了数字0本身。

最高位数字存放在列表的首位。

思路

大数相加的简单版本。关键是对于999这样的数字的处理,加一后结果为1000,长度与原数组不同。
请看代码吧!

代码

import java.util.Scanner;
import java.util.Arrays;

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] arr = new int[n];
        for(int i = 0; i < n; i++)
            arr[i] = scanner.nextInt();
        System.out.println(Arrays.toString(solution.plusOne(arr)));
    }

    public int[] plusOne(int[] digits) {
        if(digits == null || digits.length == 0) return null;
        int len = digits.length;
        int[] ans = new int[len];
        int carry = 1;
        for(int i = len - 1; i >= 0; i--) {
            ans[i] = (digits[i] + carry) % 10;
            carry = (digits[i] + carry) / 10;           
        }
        //还有进位说明为999这种形式的数
        if(carry == 1) {
            int[] newAns = new int[len+1];
            newAns[0] = 1;
            for(int i = 1; i <= len; i++)
                newAns[i] = 0;
            return newAns;
        }
        return ans;
    }
}

相关文章

  • 66. 加一

    给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只...

  • 66. 加一

    文|Seraph 01 | 问题 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放...

  • 66.加一

  • 66. 加一

    题目 给定一个非负整数组成的非空数组,给整数加一。 可以假设整数不包含任何前导零,除了数字0本身。 最高位数字存放...

  • 66.加一

    一、题目原型: 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数...

  • 66.加一

    题目给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元...

  • 66. 加一

    给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存...

  • 66.加一

    原题 https://leetcode-cn.com/problems/plus-one/ 解题思路 从数组的最后...

  • 66. 加一

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

  • 66. 加一

    题目地址(66. 加一) https://leetcode.cn/problems/plus-one/[https...

网友评论

    本文标题:66. 加一

    本文链接:https://www.haomeiwen.com/subject/scpocftx.html