ich zur Zeit folgenden Code hat:Compact Weise zu prüfen, ob Array bestimmtes Element enthält
int[][] legalForBlack = {{0,1},{1,0},{2,3},{3,2}};
for (int x=0;x<boardSize;x++) {
for (int y=0;y<boardSize;y++) {
if (x,y) in legalForBlack
methodA()
else
methodB()
}
}
Natürlich ist dieser Code nicht kompilieren. Ich suche nach einer schicken und kompakten Art zu überprüfen, wann (x, y) in der gegebenen Liste sind. Ich kann dies mit 4 if-Anweisungen oder einer Schleife tun, aber das ist kein richtiger Weg imo. Ich suche nach etwas, das dies in konstanter Zeit tut.
EDIT:
Ich glaube, ich einen Weg gefunden. Was denkst du über dies?
int[][] legalForBlack = {{0,1},{1,0},{2,3},{3,2}}; // keep in order!
int cur = 0;
for (int x=0;x<boardSize;x++) {
for (int y=0;y<boardSize;y++) {
int[] buffer = legalForBlack[cur];
if (x==buffer[0] && y==buffer[1]) {
cur++;
methodA();
} else {
methodB();
}
}
}
In der Tat. Dies erfordert jedoch eine Schleife innerhalb von Set.contains (...) selbst. Ich dachte an etwas in konstanter Zeit. Ich habe ein neues Stück Code hinzugefügt, das konstante Zeit benötigt. – Domien
Set enthält Werke in O (1), also gibt es keine Schleifen. Nur Schleife ist für Einfügen, aber Sie tun es bereits, wenn Sie Daten im Array platzieren, wenn Sie es nicht fest codierten. –
Ah ich muss die Komplexität übersehen haben. Du hast Recht. – Domien