4 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
解決這個(gè)問(wèn)題的一種方法是使用遞歸。
這個(gè)想法是跟蹤您正在遞增的數(shù)組的哪個(gè)元素。您從 index 處的元素開始array.length - 1,遞增它,如果它達(dá)到 10,則將其設(shè)置為 0,然后對(duì) index 處的元素執(zhí)行相同的操作array.length - 2,依此類推。
另請(qǐng)注意,由于您是在方法中更改數(shù)組,因此不必返回?cái)?shù)組。
private static void incrementArrayDigits(int[] array, int position) {
if (position >= array.length || position < 0) {
return;
}
array[position]++;
if (array[position] == 10 && position != 0) {
array[position] = 0;
incrementArrayDigits(array, position - 1);
}
}
// usage:
int[] array = {9,9,9};
incrementArrayDigits(array, array.length - 1);
System.out.println(Arrays.toString(array));

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
這是我想出的解決方案。希望能幫助到你!
public void incrementArrayDigits(int[] arr) {
if(arr == null)
return;
int currIndex = arr.length - 1;
while(currIndex > -1){
arr[currIndex]++;
if(arr[currIndex] < 10)
return;
else if (currIndex < 1)
return;
else
arr[currIndex--] = 0;
}
}

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
一種可能的解決方案是向后迭代數(shù)組并在需要時(shí)遞增:
private static int[] incrementArrayDigits(int[] fourDigits) {
for (int i = fourDigits.length - 1; i >= 0; i--) {
fourDigits[i]++; // increment
if (i > 0) { // cut result to 0-9, if not the first value
fourDigits[i] %= 10;
}
if (fourDigits[i] > 0) { // if no carry is passed break
break;
}
}
return fourDigits;
}

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
事實(shí)上,你真正想要達(dá)到的是“PLUS 1”。如果你的 N <= 10,直接使用 int。如果您的 N <=10,請(qǐng)使用 long。
當(dāng)然,如果你真的需要N非常大。嘗試為數(shù)字實(shí)現(xiàn)一個(gè)類?
添加回答
舉報(bào)