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.mzph.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"&…