Closed PisecesPeng closed 3 years ago
public static int[] func(int[] nums) {
int[] numsbackup = new int[nums.length + 1]; // 设置备用的结果数组
numsbackup[0] = 1; // 将其首位设置为1, 因为(9+1)进一位, 故首位一定是1
for (int i = nums.length - 1, j = numsbackup.length - 1; i >= 0; i--, j--) {
if (nums[i] < 9) { // 数组数字小于9, 说明不会再向前进位
nums[i] += 1;
numsbackup[j] = nums[i];
break;
} else if (nums[i] == 9) { // 数组数字等于9, 说明还会继续向前进位
nums[i] = 0;
numsbackup[j] = nums[i];
}
}
if (nums[0] == 0) return numsbackup; // 如果数组的第一位为0, 则说明其原值为9, 故输出备用结果
else return nums;
}
public static int[] func(int[] nums) {
int len = nums.length;
for (int i = len - 1; i >= 0; i--) {
nums[i]++;
nums[i] %= 10;
// +1后的值取余, 若是未进位, 则说明小于9, 直接返回结果
if (nums[i] != 0) return nums;
}
// 若是每个数字都进位, 则直接new新数组, 且最高位设置1即可.
nums = new int[len + 1];
nums[0] = 1;
return nums;
}
加一
给定一个由整数组成的非空数组所表示的非负数,
在该数的基础上加一.
最高位数组存放在数组的首位, 数组中每个元素只储存单个数字.
你可以假设除了整数0之外, 这个整数不会以零开头.
题目地址: https://leetcode-cn.com/problems/plus-one/