给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
package leetcode;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
/**
* @创建人 xin yi
* @创建时间 2023/3/16
* 1-给定一个由 整数 组成的 非空 数组所表示的非负整数,
* 2-在该数的基础上加一。
* 3-最高位数字存放在数组的首位,
* 4-数组中每个元素只存储单个数字。
* 5-你可以假设除了整数 0 之外,
* 6-这个整数不会以零开头。
*/
public class leetcode_01 {
@Test
public void test_01(){
List<int[]> list = new ArrayList<>();
int[] digits1 = {0};
int[] digits2 = {1,2,9};
int[] digits3 = {9,9,9};
list.add(digits1);
list.add(digits2);
list.add(digits3);
for (int[] ints : list) System.out.println(Arrays.toString(plusOne(ints)));
}
/**
* 思路:
* 1-遍历数组
* 2-考虑最后一位为9的情况
* 3-考虑所有位为9的情况
* 4-考虑数组长度
* 5-返回预期数组
* @param digits
* @return
*/
public int[] plusOne(int[] digits) {
for (int i = digits.length - 1; i >= 0; i--){
digits[i]++;
digits[i] = digits[i] % 10;
if (digits[i] != 0) return digits;
}
int[] temp = new int[digits.length + 1];
temp[0] = 1;
return temp;
}
}
[1]
[1, 3, 0]
[1, 0, 0, 0]