Welcome everyone

每周一练(30)

每周一练 汪明鑫 768浏览 0评论

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

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

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

 

示例 1:

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


示例 2:

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

 

需要考虑进位

运算需要从最后一位开始进行

 

public static int[] plus (int nums[]) {
        for (int i = nums.length - 1; i >= 0 ; i--) {
            nums[i] ++;

            //没有产生进位 直接return
            if(nums[i] % 10 != 0) {
                return nums;
            }
        }
        
        // case: 999 + 1 = 1000  数组长度+1
        nums = new int[nums.length + 1];
        nums[0] = 1;

        return nums;
    }

 

public static void main(String[] args) {
        int[] nums1 = {1, 2, 3};
        int[] plus1 = plus(nums1);
        for (int i = 0; i < plus1.length ; i++) {
            System.out.print(plus1[i] + " ");
        }
        System.out.println();

        int[] nums2 = {9, 9, 9};
        int[] plus2 = plus(nums2);
        for (int i = 0; i < plus2.length ; i++) {
            System.out.print(plus2[i] + " ");
        }
    }

输出:

1 2 4
1 0 0 0

 

 

 

转载请注明:汪明鑫的个人博客 » 每周一练(30)

喜欢 (3)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz