java 数组面试 1

本文介绍了一种将数组表示的非负整数加一的方法。通过分析数组末位的值来决定如何进行加一操作,当数组全部为9时,需要在数组头部插入1并清零原有元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目介绍:

Given a non-empty array of digits representing a non-negative integer, plus one to the integer.

The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit.

You may assume the integer does not contain any leading zero, except the number 0 itself.

Example 1:

Input: [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.

Example 2:

Input: [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.

已知一个数组,目标是将已知数组末尾加1,生成新的数组。题目中的例子已经很明显了,这里不多加赘述。

解题思路:

1:如果给的数组末尾是0-8, 则我们只需要末尾加一即可,我们不需要考虑其他数字位,直接return

2:如果给的数字末尾是9,生成的新数组最后一位变成0,并且向前一个数组进一位,这个时候要看前一位是否为9

如果不是9,则对前一位加1,然后return

3:如果所有数字都是9,则需要在数组中的排头多加一位1,如【9,9】-》【1,0,0】

代码如下:

public int[] plusOne(int[] digits) {
        
    int n = digits.length;
        
    for(int i=n-1; i>=0; i--) {
        if(digits[i] < 9) {
            digits[i]++;
            return digits;
        }
        
        digits[i] = 0;
    }
    
    int[] newNumber = new int [n+1];
    System.arraycopy(digits,0,newNumber,1,n);
    newNumber[0] = 1;
    
    return newNumber;
}
这道题很有趣 !







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值