加1
作者:互联网
介绍:将一个数组看成数字,在末位加1;返回一个数组
eg:[1,2,3] --> 123 +1 = 124 ---> [1,2,4]
eg:[9,9] --> 99 + 1 = 100 ---> [1,0,0]
public class PlusOne {
public static void main(String[] args) {
int[] ints = {3, 4, 5, 3, 2, 4, 5, 8, 9};
Solution5 solution5 = new Solution5();
solution5.plusOne(ints);
}
}
上面是测试:
//-------------------------------
下面是"封装"的方法:
/**
*
* 输入:digits = [1,2,3]
* 输出:[1,2,4]
* 解释:输入数组表示数字 123。
*
*
* 输入:digits = [4,3,2,1]
* 输出:[4,3,2,2]
* 解释:输入数组表示数字 4321。
* 示例 3:
*
*
* 输入:digits = [0]
* 输出:[1]
*
*/
class Solution5 {
public int[] plusOne(int[] digits) {
if (digits == null || digits.length == 0) throw new RuntimeException("输入类型有误");
if (digits.length == 1 && digits[0] == 0) return new int[]{1};
//为了对[9,9,9,9]这样数字,做的判断
int n = digits.length;
if (digits[digits.length - 1] == 9 && digits[0] == 9) {
for (int i = n - 1; i >= 0; i--) {
if (digits[i] == 9) {
digits[i] = 0;
} else {
digits[i] += 1;
return digits;
}
}
int[] ans = new int[n + 1];
ans[0] = 1;
//System.out.println(Arrays.toString(ans));
return ans;
}
//这个对[4,9,8,9]、[4,8,9,9]的判断
int[] ints1 = new int[digits.length];
for (int i = 0; i < digits.length; i++) {
ints1[i] = digits[i];
}
if (digits[digits.length - 1] == 9 && digits[0] != 9) {
int digitEnd = digits[digits.length - 1];
digitEnd = 0;
ints1[digits.length - 1] = 0;
for (int i = digits.length - 2; i >= 0; i--) {
if (digits[i] < 9) {
int digit = digits[i];
int i1 = digit + 1;
ints1[i] = i1;
break;
}
if (digits[i] == 9) {
ints1[i] = 0;
}
}
//System.out.println("-- :"+ Arrays.toString(ints1) );
return ints1;
}
//这些是对,正常的数字[4,3,2,1],这样做判断
int[] ints = new int[digits.length];
int endNumber = 0;
for (int i = 0; i < digits.length; i++) {
if (digits[i] == digits[digits.length - 1]) {
int digit = digits[i] + 1;
endNumber = digit;
}
}
for (int i = 0; i < digits.length - 1; i++) {
ints[i] = digits[i];
}
ints[digits.length - 1] = endNumber;
//System.out.println(Arrays.toString(ints));
return ints;
}
}
标签:,digits,ints1,int,length,ints,new 来源: https://www.cnblogs.com/chen-zhou1027/p/16505445.html