Heim  >  Artikel  >  Java  >  LeetCode DayDynamic Programming Teil 5

LeetCode DayDynamic Programming Teil 5

WBOY
WBOYOriginal
2024-07-16 12:01:49678Durchsuche

LeetCode DayDynamic Programming Part 5

518. Münzwechsel II

Sie erhalten eine ganzzahlige Array-Münze, die Münzen verschiedener Nennwerte darstellt, und einen ganzzahligen Betrag, der einen Gesamtgeldbetrag darstellt.

Gibt die Anzahl der Kombinationen zurück, aus denen dieser Betrag besteht. Wenn dieser Geldbetrag durch keine Kombination der Münzen gedeckt werden kann, geben Sie 0 zurück.

Sie können davon ausgehen, dass Sie von jeder Münzart unendlich viele haben.

Die Antwort passt garantiert in eine vorzeichenbehaftete 32-Bit-Ganzzahl.

Beispiel 1:

Eingabe: Betrag = 5, Münzen = [1,2,5]
Ausgabe: 4
Erläuterung: Es gibt vier Möglichkeiten, den Betrag zusammenzustellen:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
Beispiel 2:

Eingabe: Betrag = 3, Münzen = [2]
Ausgabe: 0
Erklärung: Der Betrag von 3 kann nicht nur mit 2er-Münzen gedeckt werden.
Beispiel 3:

Eingabe: Betrag = 10, Münzen = [10]
Ausgabe: 1

Einschränkungen:

1 <= Münzen.Länge <= 300
1 <= Münzen[i] <= 5000
Alle Münzwerte sind einzigartig.
0 <= Betrag <= 5000
Originalseite

    public int change(int amount, int[] coins) {
        int[][] dp = new int[coins.length+1][amount+1];
        for(int i=0; i<=coins.length; i++){
            dp[i][0] = 1;
        }
        for(int i=1; i<= coins.length; i++){
            for(int j=1; j<=amount; j++){
                if(j<coins[i-1]){
                    dp[i][j] = dp[i-1][j];
                }else{
                    dp[i][j] = dp[i-1][j] + dp[i][j-coins[i-1]];
                }

            }
        }
                    // Arrays.stream(dp).map(Arrays::toString).forEach(System.out::println);
        return dp[coins.length][amount];
    }
    public int change(int amount, int[] coins) {
        int[] dp = new int[amount+1];
        dp[0] = 1;
        for(int i=0; i< coins.length; i++){
            for(int j=coins[i]; j<=amount; j++){
                dp[j] = dp[j] + dp[j-coins[i]];
            }
            System.out.println(Arrays.toString(dp));
        }
        return dp[amount];
    }

377. Kombinationssumme IV

Geben Sie bei einem Array unterschiedlicher Ganzzahlen und einem ganzzahligen Zielziel die Anzahl der möglichen Kombinationen zurück, die sich zum Ziel addieren.

Die Testfälle werden so generiert, dass die Antwort in eine 32-Bit-Ganzzahl passt.

Beispiel 1:

Eingabe: Nums = [1,2,3], Ziel = 4
Ausgabe: 7
Erklärung:
Die möglichen Kombinationsmöglichkeiten sind:
(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)
Beachten Sie, dass unterschiedliche Sequenzen als unterschiedliche Kombinationen gezählt werden.
Beispiel 2:

Eingabe: Nums = [9], Ziel = 3
Ausgabe: 0

Einschränkungen:

1 <= nums.length <= 200
1 <= nums[i] <= 1000
Alle Elemente von Zahlen sind einzigartig.
1 <= Ziel <= 1000

Folge: Was passiert, wenn negative Zahlen im angegebenen Array zulässig sind? Wie verändert es das Problem? Welche Einschränkung müssen wir der Frage hinzufügen, um negative Zahlen zuzulassen?

    public int combinationSum4(int[] nums, int target) {
        int[] dp = new int[target+1];
        dp[0] = 1;
        for(int i=1; i<=target; i++){
            for(int j=0; j<nums.length; j++){
                if(nums[j] <= i){
                    dp[i] = dp[i] + dp[i-nums[j]];
                }
            }
            // System.out.println(Arrays.toString(dp));
        }
        return dp[target];
    }

Das obige ist der detaillierte Inhalt vonLeetCode DayDynamic Programming Teil 5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn