Heim > Artikel > Backend-Entwicklung > Finden Sie den Schüler, der die Kreide ersetzen wird
1894. Finden Sie den Schüler, der die Kreide ersetzen wird
Schwierigkeit:Mittel
Themen:Array, Binäre Suche, Simulation, Präfixsumme
Es gibt n Schüler in einer Klasse mit den Nummern 0 bis n – 1. Der Lehrer gibt jedem Schüler eine Aufgabe, beginnend mit der Schülernummer 0, dann mit der Schülernummer 1 usw., bis der Lehrer die Schülernummer n erreicht - 1. Danach startet der Lehrer den Vorgang erneut und beginnt erneut mit der Schülernummer 0.
Sie erhalten ein 0-indiziertes ganzzahliges Array chalk und eine ganze Zahl k. Es sind zunächst k Kreidestücke. Wenn dem Schüler Nummer i ein Problem zur Lösung gegeben wird, verwendet er Kreidestücke, um dieses Problem zu lösen. Wenn jedoch die aktuelle Anzahl an Kreidestücken deutlich kleiner als Kreide[i] ist, dann wird die Schülerzahl aufgefordert, die Kreide zu ersetzen.
Geben Sie den Index des Schülers zurück, der die Kreidestückeersetzen soll.
Beispiel 1:
Beispiel 2:
Einschränkungen:
Hinweis:
Lösung:
Lassen Sie uns das Problem Schritt für Schritt aufschlüsseln:
Gesamtkreideverbrauch:
Berechnen Sie zunächst die Gesamtmenge an Kreide, die für eine komplette Runde benötigt wird (von Schüler 0 bis Schüler n-1). Dies hilft uns, den Wert von k zu reduzieren, indem berücksichtigt wird, wie viele vollständige Runden mit k Kreidestücken abgedeckt werden können.
Reduzieren Sie k um Modulo:
Wenn k größer ist als die gesamte Kreide, die für eine vollständige Runde benötigt wird, können wir das Problem vereinfachen, indem wir k % total_chalk nehmen. Durch diesen Vorgang erhalten wir die verbleibende Kreide nach so vielen vollständigen Runden wie möglich, sodass wir nur noch ein kleineres Problem lösen müssen.
Finden Sie den Schüler, dem die Kreide ausgeht:
Durchlaufen Sie den Kreideverbrauch jedes Schülers und subtrahieren Sie ihn von k, bis k kleiner wird als der Kreidebedarf des aktuellen Schülers. Der Index dieses Schülers ist unsere Antwort.
Nehmen wir ein Beispiel: Kreide = [3, 4, 1, 2] und k = 25:
text{total_chalk} = 3 + 4 + 1 + 2 = 10
k % 10 = 25 % 10 = 5
Jetzt haben wir k = 5, nachdem wir so viele volle Runden wie möglich subtrahiert haben.
Lassen Sie uns diese Lösung in PHP implementieren: 1894. Finden Sie den Schüler, der die Kreide ersetzen wird
Explanation:
- Total Chalk Sum: We sum up all the chalk requirements to get the total for one complete round.
- Modulo Operation: Using modulo with k, we get the effective number of chalks to distribute after full rounds.
- Find the Student: We then iterate through the students, checking if the remaining chalk is sufficient. The first time it's insufficient, that student's index is the answer.
Complexity:
This approach ensures that the problem is solved efficiently even for large inputs.
Contact Links
If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks ?. Your support would mean a lot to me!
If you want more helpful content like this, feel free to follow me:
Das obige ist der detaillierte Inhalt vonFinden Sie den Schüler, der die Kreide ersetzen wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!