Hallo Dies ist Skanehira von Global Sense Co., Ltd..
Dieses Mal habe ich versucht, AOJs [Binäre Suche] zu lösen (http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_4_B&lang=jp). Als ich den Titel sah, dachte ich, dass es schwierig sein würde Es war unerwartet einfach ...
Zusammenfassend Geben Sie aus, wie viele Werte in der Zahlenspalte in der 4. Zeile in der Zahlenspalte in der 2. Zeile enthalten sind. Es ist der Inhalt.
Um ehrlich zu sein, muss ich nicht die erste und dritte Zeile eingeben ... Ich möchte nicht die Mühe machen, es zu überspringen.
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try (Scanner scan = new Scanner(System.in)) {
//überspringen
scan.nextLine();
//Speichern Sie das Suchziel in der Karte
Map<String, String> map = new HashMap<String, String>();
for (String num : scan.nextLine().split(" ")) {
map.put(num, "");
}
//überspringen
scan.nextLine();
//Zählen Sie, ob es ein Suchziel gibt
int count = 0;
for (String num : scan.nextLine().split(" ")) {
if (map.containsKey(num)) {
count++;
}
}
System.out.println(count);
}
}
}
for (int i : targetNums) {
for (int j : nums) {
if (i = j) count++;
}
}
Speichern Sie die 2. und 4. Zeile in einem Array Ich fragte mich, ob ich vergleichen könnte, während ich herumwirbelte. Es ist ineffizient, die for-Anweisung zu verdoppeln Ich habe mich für die Karte entschieden.
Die Verarbeitung sollte schneller sein, wenn das Suchziel der Kartenschlüssel ist und die Schlüsselprüfung durchgeführt wird! (Obwohl nicht verifiziert)
Ich frage mich, ob es einen anderen effizienteren Weg gibt ...
Recommended Posts