1894。找出會替換粉筆的學生
難度:中
主題:陣列、二分查找、模擬、前綴和
一個班級有n個學生,編號從0到n - 1。老師會給每個學生一個問題,從學號0開始,然後是學號1,以此類推,直到老師達到學號n - 1. 之後,老師將重新開始該過程,再次從學號0開始。
給你一個0索引整數陣列chalk和一個整數k。最初有 k 支粉筆。當編號 i 的學生需要解決一個問題時,他們將使用 chalk[i] 塊粉筆來解決這個問題。然而,如果目前粉筆的數量嚴格小於粉筆[i],那麼學號i將被要求更換粉筆。
回傳將替換粉筆片的學生的索引。
範例1:
範例2:
約束:
提示:
解:
讓我們一步步分解問題:
粉筆總消耗量:
首先,計算完整一輪(從學生 0 到學生 n-1)所需的粉筆總量。這將幫助我們透過考慮 k 支粉筆可以覆蓋多少完整回合來減少 k 的值。
透過模數減少 k:
如果 k 大於一整輪所需的粉筆總數,我們可以透過取 k %total_chalk 來簡化問題。此操作將在盡可能多的整輪後為我們提供剩餘的粉筆,從而留下一個較小的問題需要解決。
找到粉筆用完的學生:
迭代每個學生的粉筆消耗量,從 k 中減去它,直到 k 小於當前學生的粉筆需求。這位同學的索引就是我們的答案。
舉個例子,chalk = [3, 4, 1, 2] 且 k = 25:
text{total_chalk} = 3 + 4 + 1 + 2 = 10
k % 10 = 25 % 10 = 5
減去盡可能多的整輪後,現在 k = 5。
讓我們用 PHP 實作這個解:1894。找出將更換粉筆的學生
<?php /** * @param Integer[] $chalk * @param Integer $k * @return Integer */ function chalkReplacer($chalk, $k) { ... ... ... /** * go to ./solution.php */ } // Example usage: //Example 1 $chalk = [5,1,5]; $k = 22; echo chalkReplacer($chalk, $k); // Output: 0 //Example 2 $chalk = [3, 4, 1, 2]; $k = 25; echo chalkReplacer($chalk, $k); // Output: 1 ?>
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:
以上是找到將更換粉筆的學生的詳細內容。更多資訊請關注PHP中文網其他相關文章!