Array Replacing

Diskutiere Array Replacing im Java Basics - Anfänger-Themen Bereich.
Kirby_Sike

Kirby_Sike

Also ich wiederhole gerade einfach ein paar Basics, bezogen auf Arrays(Array sortieren, etc...). Ich versuche gerade zu ermitteln welcher Wert von eine Spanne zwischen 1-9 nicht im Array liegt und dann die 0 durch diesen Wert ersetzen. Meine Frage wäre, geht es auch kürzer als das was ich angehangen habe ?

Java:
public static void fehlenderWert(int[] gameboard) {
        int replacement = 0;
        int tempNumber = 1;
        boolean stop = false;
        while(tempNumber <= 9) {
            if(find(gameboard, tempNumber) == -1) {
                replacement = tempNumber;
                break;
            }
            tempNumber += 1;
        }
        for(int i = 0; i < gameboard.length; i++) {
            if(gameboard[i] == 0) {
                gameboard[i] = replacement;
                return;
            }
        }
    }
   
    private static int find(int[] array, int value) {
        for(int i=0; i<array.length; i++) {
             if(array[i] == value) {
                 return i;
             }
        }
        return -1;
    }
   
    public static void main(String[] args) {
        int[] a = {3, 7, 2, 0, 8, 9, 4, 1, 6 };
        fehlenderWert(a);
        System.out.println(a[3]);
    }
 
mihe7

mihe7

Java:
    public static void fehlenderWert(int[] gameboard) {
        int zeroIx = find(gameboard, 0);
        for (int i = 1; i < 10; i++) {
            if (find(gameboard, i) == -1) {
                gameboard[zeroIx] = i;
                break;
            }
        }
    }
 
L

lennero

Falls immer nur 1 einzige Zahl durch eine 0 ersetzt wird, kannst du die Summe der Restlichen Zahlen von 45 abziehen. Das ist dann die Zahl die du brauchst.

Danach gehst du das Array durch und ersetzt die 0 durch diese Zahl.

Dein Algorithmus sieht auf den ersten Blick quadratisch aus. Wenn du das obere umsetzt nimmt die Laufzeit nur linear mit N zu.
 
Kirby_Sike

Kirby_Sike

Falls immer nur 1 einzige Zahl durch eine 0 ersetzt wird, kannst du die Summe der Restlichen Zahlen von 45 abziehen. Das ist dann die Zahl die du brauchst.

Danach gehst du das Array durch und ersetzt die 0 durch diese Zahl.

Dein Algorithmus sieht auf den ersten Blick quadratisch aus. Wenn du das obere umsetzt nimmt die Laufzeit nur linear mit N zu.
Stimmt das könnte ich natürlich auch machen und ist wesentlich effizienter :)
 
Thema: 

Array Replacing

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben