|
| 1 | +package pp.arithmetic.leetcode; |
| 2 | + |
| 3 | +import pp.arithmetic.Util; |
| 4 | + |
| 5 | +import java.util.ArrayList; |
| 6 | +import java.util.List; |
| 7 | + |
| 8 | +/** |
| 9 | + * Created by wangpeng on 2019-10-19. |
| 10 | + * 66. 加一 |
| 11 | + * <p> |
| 12 | + * 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 |
| 13 | + * <p> |
| 14 | + * 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 |
| 15 | + * <p> |
| 16 | + * 你可以假设除了整数 0 之外,这个整数不会以零开头。 |
| 17 | + * <p> |
| 18 | + * 示例 1: |
| 19 | + * <p> |
| 20 | + * 输入: [1,2,3] |
| 21 | + * 输出: [1,2,4] |
| 22 | + * 解释: 输入数组表示数字 123。 |
| 23 | + * 示例 2: |
| 24 | + * <p> |
| 25 | + * 输入: [4,3,2,1] |
| 26 | + * 输出: [4,3,2,2] |
| 27 | + * 解释: 输入数组表示数字 4321。 |
| 28 | + * <p> |
| 29 | + * 来源:力扣(LeetCode) |
| 30 | + * 链接:https://leetcode-cn.com/problems/plus-one |
| 31 | + * 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 |
| 32 | + */ |
| 33 | +public class _66_plusOne { |
| 34 | + |
| 35 | + public static void main(String[] args) { |
| 36 | + _66_plusOne plusOne = new _66_plusOne(); |
| 37 | + Util.printArray(plusOne.plusOne(new int[]{1, 2, 3})); |
| 38 | + Util.printArray(plusOne.plusOne(new int[]{4, 3, 2, 1})); |
| 39 | + Util.printArray(plusOne.plusOne(new int[]{9, 9, 9})); |
| 40 | + Util.printArray(plusOne.plusOne(new int[]{0})); |
| 41 | + Util.printArray(plusOne.plusOne(new int[]{9})); |
| 42 | + } |
| 43 | + |
| 44 | + /** |
| 45 | + * 解题思路: |
| 46 | + * 一道算数加法+1,需要注意两种情况: |
| 47 | + * 1、低位向高位进位 ==> 从末尾开始遍历 |
| 48 | + * 2、整数头需要进位 ==> 构建一个新数组保存返回结果 |
| 49 | + * |
| 50 | + * @param digits |
| 51 | + * @return |
| 52 | + */ |
| 53 | + public int[] plusOne(int[] digits) { |
| 54 | + List<Integer> retList = new ArrayList<>(); |
| 55 | + int highAdd = 1; //进位 |
| 56 | + for (int i = digits.length - 1; i >= 0; i--) { |
| 57 | + int newDigit = digits[i] + highAdd; |
| 58 | + highAdd = newDigit / 10; |
| 59 | + newDigit = newDigit % 10; |
| 60 | + retList.add(0, newDigit); |
| 61 | + } |
| 62 | + if (highAdd > 0) retList.add(0, highAdd); |
| 63 | + //listToArr |
| 64 | + int[] retArr = new int[retList.size()]; |
| 65 | + for (int i = 0; i < retList.size(); i++) { |
| 66 | + retArr[i] = retList.get(i); |
| 67 | + } |
| 68 | + |
| 69 | + return retArr; |
| 70 | + } |
| 71 | +} |
0 commit comments