1894. 找到需要補充粉筆的學生編號

1894. 找到需要補充粉筆的學生編號

一個班級里有 n 個學生,編號為 0 到 n - 1 。每個學生會依次回答問題,編號為 0 的學生先回答,然后是編號為 1 的學生,以此類推,直到編號為 n - 1 的學生,然后老師會重復這個過程,重新從編號為 0 的學生開始回答問題。

給你一個長度為 n 且下標從 0 開始的整數數組 chalk 和一個整數 k 。一開始粉筆盒里總共有 k 支粉筆。當編號為 i 的學生回答問題時,他會消耗 chalk[i] 支粉筆。如果剩余粉筆數量 嚴格小于 chalk[i] ,那么學生 i 需要 補充 粉筆。

請你返回需要 補充 粉筆的學生 編號 。

示例 1:輸入:chalk = [5,1,5], k = 22
輸出:0
解釋:學生消耗粉筆情況如下:
- 編號為 0 的學生使用 5 支粉筆,然后 k = 17 。
- 編號為 1 的學生使用 1 支粉筆,然后 k = 16 。
- 編號為 2 的學生使用 5 支粉筆,然后 k = 11 。
- 編號為 0 的學生使用 5 支粉筆,然后 k = 6 。
- 編號為 1 的學生使用 1 支粉筆,然后 k = 5 。
- 編號為 2 的學生使用 5 支粉筆,然后 k = 0 。
編號為 0 的學生沒有足夠的粉筆,所以他需要補充粉筆。
示例 2:輸入:chalk = [3,4,1,2], k = 25
輸出:1
解釋:學生消耗粉筆情況如下:
- 編號為 0 的學生使用 3 支粉筆,然后 k = 22 。
- 編號為 1 的學生使用 4 支粉筆,然后 k = 18 。
- 編號為 2 的學生使用 1 支粉筆,然后 k = 17 。
- 編號為 3 的學生使用 2 支粉筆,然后 k = 15 。
- 編號為 0 的學生使用 3 支粉筆,然后 k = 12 。
- 編號為 1 的學生使用 4 支粉筆,然后 k = 8 。
- 編號為 2 的學生使用 1 支粉筆,然后 k = 7 。
- 編號為 3 的學生使用 2 支粉筆,然后 k = 5 。
- 編號為 0 的學生使用 3 支粉筆,然后 k = 2 。
編號為 1 的學生沒有足夠的粉筆,所以他需要補充粉筆。

解題思路

使用前綴和+二分

  1. 我們可以通過維護一個前綴和數組,記錄下當遍歷到當前學生A的時候,已經消耗了多少根粉筆
  2. 因為chalk數組是需要循環遍歷的,所以當chalk數組的總和小于k的時候,我們可以直接將k將去chalk數組的總和,當作已經遍歷了一輪了粉筆還沒消耗完。我們可以通過取模,直接避免這種循環遍歷
  3. 使用二分法查找前綴和小于k的下標,說明遍歷到當前學生的時候,粉筆已經用完了

代碼

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;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/390115.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390115.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390115.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[No0000B0]ReSharper操作指南1/16-入門與簡介

安裝指南 在安裝之前&#xff0c;您可能需要檢查系統要求。 ReSharper是一個VisualStudio擴展。它支持VisualStudio2010,2012,2013,2015和2017.安裝完成后&#xff0c;您將在VisualStudio的主菜單中找到新的ReSharper條目。大多數ReSharper命令都可以在這個菜單中找到。但是&a…

更改H2元素的顏色

In coding there are often many different solutions to a given problem. This is especially true when it comes to styling an HTML element.在編碼中&#xff0c;對于給定問題通常有許多不同的解決方案。 在樣式化HTML元素時&#xff0c;尤其如此。 One of the easiest …

[CTSC2008]圖騰totem

&#xff08;圖騰這題做的我頭疼 233&#xff09; 記 f(xxxx) 為 xxxx 出現的次數&#xff0c;那么題目就是要求 f(1324) - f(1243) - f(1432) 最有難度的是把上面的式子轉化一下&#xff0c;變成 f(1x2x) - f(14xx) - f(12xx) f(1234) 這點除非對 f 的求法能一眼看出來&#…

Box Shadow CSS教程–如何向任何HTML元素添加投影

We can add a drop shadow to any HTML element using the CSS property box-shadow. Heres how. 我們可以使用CSS屬性box-shadow將陰影添加到任何HTML元素。 這是如何做。 添加基本??投影 (Adding a Basic Drop Shadow) Lets first set up some basic HTML elements to add…

數據結構學習筆記(一)——《大話數據結構》

第一章 數據結構緒論 基本概念和術語 數據 描述客觀事物的符號&#xff0c;計算機中可以操作的對象&#xff0c;能被計算機識別并輸入給計算機處理的符號的集合。包括整型、實型等數值類型和字符、聲音、圖像、視頻等非數值類型。 數據元素 組成數據的、有一定意義的基本單位&a…

6. Z 字形變換

6. Z 字形變換 將一個給定字符串 s 根據給定的行數 numRows &#xff0c;以從上往下、從左到右進行 Z 字形排列。 比如輸入字符串為 “PAYPALISHIRING” 行數為 3 時&#xff0c;排列如下&#xff1a; P A H N A P L S I I G Y I R之后&#xff0c;你的輸出需要從…

java的垃圾回收機制包括:主流回收算法和收集器(jvm的一個主要優化方向)

2019獨角獸企業重金招聘Python工程師標準>>> java的垃圾回收機制是java語言的一大特色&#xff0c;解放了開發人員對內存的復雜控制&#xff0c;但如果你想要一個高級java開發人員&#xff0c;還是需要知道其機制&#xff0c;所謂不僅要會用還要知道其原理這樣才能用…

北京dns服務器ip地址_什么是DNS? 域名系統,DNS服務器和IP地址概念介紹

北京dns服務器ip地址介紹 (Introduction) By the end of this article, you should have a better understanding of:在本文末尾&#xff0c;您應該對以下內容有更好的了解&#xff1a; What DNS is and what it does 什么是DNS及其作用 What DNS servers do DNS服務器做什么 …

767. 重構字符串

767. 重構字符串 給定一個字符串S&#xff0c;檢查是否能重新排布其中的字母&#xff0c;使得兩相鄰的字符不同。 若可行&#xff0c;輸出任意可行的結果。若不可行&#xff0c;返回空字符串。 示例 1: 輸入: S “aab” 輸出: “aba” 示例 2: 輸入: S “aaab” 輸出: “…

長生生物狂犬病疫苗造假

這兩天暴發的長生生物狂犬病疫苗造假案真是很厲害&#xff0c;世人都說投資不過山海關還真有一定道理。 市場上長生生物的狂犬病疫苗約占1/4左右&#xff0c;是一個非常大的用量。 你別說&#xff0c;疫苗真的是非常適合造假&#xff1a; 1. 狂犬病有一定潛伏期&#xff0c;幾天…

小程序 雜記

調試打印測試的方法&#xff1a; 方法1、顯示提示框 &#xff08;微信自帶的API&#xff09; wx.showToast({title: 成功,icon: success,duration: 2000 }) 方法2、js的console.log()方法 //test.js Page({onLoad: function(option){console.log(option.query)} }) wx.showToa…

使用fetch封裝ajax_如何使用Fetch在JavaScript中進行AJAX調用

使用fetch封裝ajaxI will be sharing bite sized learnings about JavaScript regularly in this series. Well cover JS fundamentals, browsers, DOM, system design, domain architecture and frameworks. 在本系列中&#xff0c;我將定期分享有關JavaScript的小知識。 我們…

RxJS筆記

RxJS 《深入淺出RxJS》讀書筆記遺留問題 Observable的HOT與COLD對應的實際場景&#xff0c;以及在編碼中的體現chapter1 html部分 測試你對時間的感覺按住我一秒鐘然后松手你的時間&#xff1a;毫秒jquery實現 var time new Date().getTime(); $("#hold-me").moused…

滾動一定的高度底色遞增

$(window).scroll(function() {var swipeHeight 200;//完全變色高度var scrollTop $(document).scrollTop();//頁面滾動高度var x scrollTop/swipeHeight;$(".head-bg").css({"opacity":x}); }) 轉載于:https://www.cnblogs.com/lhj-blog/p/8521525.htm…

@hot熱加載修飾器導致static靜態屬性丟失(已解決)

react開發的時候&#xff0c;引入熱加載&#xff0c;用了修飾器的引入方式&#xff0c;發現了一個很有意思的問題&#xff0c;網上并沒有相關文章&#xff0c;所以拋出來探討下。 一段很簡單的測試代碼。但是經過babel編碼后&#xff0c;變得很有意思。假設編碼成es2016&#x…

49. 字母異位詞分組

49. 字母異位詞分組 給你一個字符串數組&#xff0c;請你將 字母異位詞 組合在一起。可以按任意順序返回結果列表。 字母異位詞 是由重新排列源單詞的字母得到的一個新單詞&#xff0c;所有源單詞中的字母都恰好只用一次。 示例 1: 輸入: strs [“eat”, “tea”, “tan”…

python 入門程序_非Python程序員的Python速成課程-如何快速入門

python 入門程序This article is for people who already have experience in programming and want to learn Python quickly.本文適用于已經有編程經驗并希望快速學習Python的人們。 I created this resource out of frustration when I couldnt find an online course or a…

cmd命令操作Oracle數據庫

//注意cmd命令執行的密碼字符不能過于復雜 不能帶有特殊符號 以免執行不通過 譬如有&#xff01;#&#xffe5;%……&*之類的 所以在Oracle數據庫設置密碼是不要太復雜 /String Database "ORCL"; 不指向地址程序只能安裝在數據庫服務器上才能執行到命令String …

OpenCV學習(7.16)

寫了個實現攝像頭上畫線并輸出角度的東西……雖然很簡單&#xff0c;但腦殘的我還是debug了很長時間。 1 // 圓和直線.cpp : 定義控制臺應用程序的入口點。2 //3 4 #include "stdafx.h"5 6 using namespace std;7 using namespace cv;8 9 void onMouse(int event, in…

學習vue.js的自我梳理筆記

基本語法格式&#xff1a; <script> new Vue({ el: #app, data: { url: http://www.runoob.com } }) </script> 指令 【指令是帶有 v- 前綴的特殊屬性。】 判斷 <p v-if"seen">現在你看到我了</p> 參數 <a v-bind:href"url"&…