2016-05-24 7 views
1

Ich brauche Hilfe bei einer Coding-Frage. Ich hätte gerne ein paar Tipps, um die Antwort zu finden, aber nicht die Antwort selbst.Nicht-Ganzzahlen zählen

Probenaufgabe sieht wie folgt aus 3112

Beispielausgabe 2 ist, weil die ganzen Zahlen nicht wiederholt.

Hier ist der Code

public static int lonelyInteger(int[] arr) 
{ 

    need to code this 

} 


public static void main(String[] args) throws IOException 
{ 
    Scanner in = new Scanner(System.in); 
    final String fileName = System.getenv("OUTPUT_PATH"); 
    BufferedWriter bw = new BufferedWriter(new FileWriter(fileName)); 
    int res; 

    int _arr_size = Integer.parseInt(in.nextLine()); 
    int[] _arr = new int[_arr_size]; 
    int _arr_item; 
    for(int _arr_i = 0; _arr_i < _arr_size; _arr_i++) 
    { 
     _arr_item = Integer.parseInt(in.nextLine()); 
     _arr[_arr_i] = _arr_item; 
    } 

    res = loneyInteger(_arr); 
    bw.write(String.valueOf(res)); 
    bw.newLine(); 

    bw.close(); 
} 
+1

Können Sie mehr Beispieltestfälle geben? Der, den du gabst, ergibt für mich keinen Sinn. Ich bin nicht sicher, wie du 2 bekommen hast. – 4castle

+1

@ 4castle Es gibt zwei verschiedene Ganzzahlen, die sich nicht wiederholen (3 und 2). – Gendarme

+0

Nur eine Übersicht: Iterate durch jede Ziffer. Prüfe für jede Ziffer, ob sie innerhalb der Zahl erneut auftritt. Wenn dies nicht der Fall ist, fügen Sie eins zu einem Indexzähler hinzu. – Dando18

Antwort

0

Schreiben iteriert eine Schleife, die vom Anfang bis zum Ende der arr und das Element vor überprüfen und hinten an jedem Index für das es einen anderen Wert enthält. Wenn der Wert sich vom vorherigen und nächsten Element unterscheidet, fügen Sie eins zum Zähler hinzu. Stellen Sie sicher, dass vor dem Zugriff auf diese Indizes überprüft wird, ob der Index vor oder hinter dem Wert -1 oder arr.length liegt.

Spoiler:

int count = 0; for (int i = 0; i < arr.length; i++) if (i-1 >= 0 && arr[i] == arr[i-1] || i+1 < arr.length && arr[i] == arr[i+1]) continue; else count++; return count;

0

Sie können einen Zähler für die ganzen Zahlen machen, die sich wiederholt, während Sie sie lesen.

Zum Beispiel:

for(int _arr_i = 0; _arr_i < _arr_size; _arr_i++) 
{ 
    _arr_item = Integer.parseInt(in.nextLine()); 
    if (itemNotInList(_arr_item)) 
     repeatedItemsCounter++; 
} 
unrepeadedItems = allItems - repeatedItemsCounter