第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

數(shù)組中的數(shù)字增量

數(shù)組中的數(shù)字增量

qq_花開花謝_0 2022-12-15 14:50:49
我想遞增 (+1) 具有 N 個(gè)值并表示整數(shù)的 int 數(shù)組的最后一位。每個(gè)值都是 0-9 之間的單個(gè)數(shù)字。邏輯是這樣的:如果要增加的數(shù)字是 9,它必須變成 0,下一個(gè)(從右到左)必須增加 1。如果你到達(dá)數(shù)組的第一個(gè)數(shù)字,它是 9,這將變成 10。示例:[3,4,5,6] -> [3,4,5,7]  [3,9,2,9] -> [3,9,3,0]  [3,4,9,9] -> [3,5,0,0]  [9,9,9,9] -> [10,0,0,0]  我做了同樣的練習(xí),但只有 4 位數(shù),所以邏輯很簡(jiǎn)單:int[] incrementArrayDigits(int[] fourDigits) {    if (fourDigits[3] != 9) {        fourDigits[3]++;    } else if (fourDigits[2] != 9) {        fourDigits[3] = 0;        fourDigits[2]++;    } else if (fourDigits[1] != 9) {        fourDigits[3] = 0;        fourDigits[2] = 0;        fourDigits[1]++;    } else if (fourDigits[0] != 9) {        fourDigits[3] = 0;        fourDigits[2] = 0;        fourDigits[1] = 0;        fourDigits[0]++;    }    if (fourDigits[0] == 9 && fourDigits[1] == 9 && fourDigits[2] == 9 &&         fourDigits[3] == 9) {        fourDigits[1] = fourDigits[2] = fourDigits[3] = 0;        fourDigits[0] = 10;    }    System.out.println(Arrays.toString(fourDigits));    return fourDigits;}我試圖解決 N 個(gè)數(shù)字取數(shù)組長(zhǎng)度然后使用 for 循環(huán)的問(wèn)題,但我無(wú)法達(dá)到預(yù)期的結(jié)果。
查看完整描述

4 回答

?
RISEBY

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));


查看完整回答
反對(duì) 回復(fù) 2022-12-15
?
慕妹3146593

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;

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-12-15
?
回首憶惘然

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;

}


查看完整回答
反對(duì) 回復(fù) 2022-12-15
?
富國(guó)滬深

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è)類?


查看完整回答
反對(duì) 回復(fù) 2022-12-15
  • 4 回答
  • 0 關(guān)注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)