1894. 找到需要补充粉笔的学生编号
生活随笔
收集整理的這篇文章主要介紹了
1894. 找到需要补充粉笔的学生编号
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1894. 找到需要補(bǔ)充粉筆的學(xué)生編號(hào)
一個(gè)班級(jí)里有 n 個(gè)學(xué)生,編號(hào)為 0 到 n - 1 。每個(gè)學(xué)生會(huì)依次回答問(wèn)題,編號(hào)為 0 的學(xué)生先回答,然后是編號(hào)為 1 的學(xué)生,以此類推,直到編號(hào)為 n - 1 的學(xué)生,然后老師會(huì)重復(fù)這個(gè)過(guò)程,重新從編號(hào)為 0 的學(xué)生開始回答問(wèn)題。
給你一個(gè)長(zhǎng)度為 n 且下標(biāo)從 0 開始的整數(shù)數(shù)組 chalk 和一個(gè)整數(shù) k 。一開始粉筆盒里總共有 k 支粉筆。當(dāng)編號(hào)為 i 的學(xué)生回答問(wèn)題時(shí),他會(huì)消耗 chalk[i] 支粉筆。如果剩余粉筆數(shù)量 嚴(yán)格小于 chalk[i] ,那么學(xué)生 i 需要 補(bǔ)充 粉筆。
請(qǐng)你返回需要 補(bǔ)充 粉筆的學(xué)生 編號(hào) 。
示例 1:輸入:chalk = [5,1,5], k = 22 輸出:0 解釋:學(xué)生消耗粉筆情況如下: - 編號(hào)為 0 的學(xué)生使用 5 支粉筆,然后 k = 17 。 - 編號(hào)為 1 的學(xué)生使用 1 支粉筆,然后 k = 16 。 - 編號(hào)為 2 的學(xué)生使用 5 支粉筆,然后 k = 11 。 - 編號(hào)為 0 的學(xué)生使用 5 支粉筆,然后 k = 6 。 - 編號(hào)為 1 的學(xué)生使用 1 支粉筆,然后 k = 5 。 - 編號(hào)為 2 的學(xué)生使用 5 支粉筆,然后 k = 0 。 編號(hào)為 0 的學(xué)生沒(méi)有足夠的粉筆,所以他需要補(bǔ)充粉筆。 示例 2:輸入:chalk = [3,4,1,2], k = 25 輸出:1 解釋:學(xué)生消耗粉筆情況如下: - 編號(hào)為 0 的學(xué)生使用 3 支粉筆,然后 k = 22 。 - 編號(hào)為 1 的學(xué)生使用 4 支粉筆,然后 k = 18 。 - 編號(hào)為 2 的學(xué)生使用 1 支粉筆,然后 k = 17 。 - 編號(hào)為 3 的學(xué)生使用 2 支粉筆,然后 k = 15 。 - 編號(hào)為 0 的學(xué)生使用 3 支粉筆,然后 k = 12 。 - 編號(hào)為 1 的學(xué)生使用 4 支粉筆,然后 k = 8 。 - 編號(hào)為 2 的學(xué)生使用 1 支粉筆,然后 k = 7 。 - 編號(hào)為 3 的學(xué)生使用 2 支粉筆,然后 k = 5 。 - 編號(hào)為 0 的學(xué)生使用 3 支粉筆,然后 k = 2 。 編號(hào)為 1 的學(xué)生沒(méi)有足夠的粉筆,所以他需要補(bǔ)充粉筆。解題思路
使用前綴和+二分
代碼
class Solution {public int chalkReplacer(int[] chalk, int k) {int n=chalk.length;long[] dp=new long[n+1];for(int i=0;i<n;i++)dp[i+1]=dp[i]+chalk[i];long tar=k%dp[n];int l=0,r=n;while(l<=r){int mid=(r-l)/2+l;if(dp[mid]>tar){r=mid-1;}else l=mid+1;}return l-1;} }總結(jié)
以上是生活随笔為你收集整理的1894. 找到需要补充粉笔的学生编号的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦到淹大水会有什么事情发生
- 下一篇: 767. 重构字符串