LeetCode //C – 1207. Eindeutige Anzahl von Vorkommen

1207. Eindeutige Anzahl von Vorkommen

Geben Sie bei einem gegebenen Array von ganzen Zahlen arr „true“ zurück, wenn die Anzahl der Vorkommen jedes Werts im Array eindeutig ist, andernfalls „false“.
 

Beispiel 1:

Eingabe: arr = [1,2,2,1,1,3]
Ausgabe: true
Erläuterung: Der Wert 1 kommt dreimal vor, 2 hat 2 und 3 hat 1. Keine zwei Werte kommen gleich oft vor.

Beispiel 2:

Eingabe: arr = [1,2]
Ausgabe: falsch

Beispiel 3:

Eingabe: arr = [-3,0,1,-3,1,1,1,-3,10,0]
Ausgabe: wahr

Einschränkungen:
  • 1 <= arr.length <= 1000
  • -1000 <= arr[i] <= 1000

Von: LeetCode
Link: 1207. Eindeutige Anzahl von Vorkommen


Lösung:

Ideen:

Wir können eine Hash-Tabelle (oder ein Array unter Berücksichtigung der Einschränkungen) verwenden, um Vorkommen zu zählen. Anschließend verwenden wir eine weitere Hash-Tabelle, um die Eindeutigkeit dieser Zählungen zu überprüfen.

  • Vorkommen ist ein von -1000 bis 1000 indiziertes Array (um 1000 verschoben, um negative Zahlen aufzunehmen), das zum Zählen der Vorkommen jeder Ganzzahl in arr verwendet wird.
  • seen ist ein boolesches Array, das verwendet wird, um zu verfolgen, ob eine bestimmte Vorkommensanzahl bereits zuvor gesehen wurde.
  • Wir durchlaufen zunächst den arr, um das Vorkommen jeder Zahl zu zählen.
  • Anschließend durchlaufen wir das Vorkommnis-Array, um zu überprüfen, ob bereits eine Zählung festgestellt wurde. Wenn eine Zählung wiederholt wird, geben wir false zurück. Wenn wir die Schleife beenden, ohne doppelte Zählungen zu finden, geben wir „true“ zurück.
Code:
bool uniqueOccurrences(int* arr, int arrSize) {
    
    
    int occurrences[2001] = {
    
    0}; // Array to count occurrences, offset by 1000 for negative numbers
    bool seen[1001] = {
    
    false}; // Array to track if an occurrence count has been seen

    // Count occurrences of each number
    for (int i = 0; i < arrSize; i++) {
    
    
        occurrences[arr[i] + 1000]++;
    }

    // Check for unique occurrences
    for (int i = 0; i < 2001; i++) {
    
    
        if (occurrences[i] > 0) {
    
    
            if (seen[occurrences[i]]) {
    
    
                // If we have already seen this count, it's not unique
                return false;
            }
            seen[occurrences[i]] = true;
        }
    }

    return true;
}

Guess you like

Origin blog.csdn.net/navicheung/article/details/135310009