首页 > 其他分享 >2073. 买票需要的时间

2073. 买票需要的时间

时间:2024-09-29 10:27:21浏览次数:6  
标签:tickets 需要 int 票数 变为 队伍 2073 买票

有 n 个人前来排队买票,其中第 0 人站在队伍 最前方 ,第 (n - 1) 人站在队伍 最后方 。

给你一个下标从 0 开始的整数数组 tickets ,数组长度为 n ,其中第 i 人想要购买的票数为 tickets[i] 。

每个人买票都需要用掉 恰好 1 秒 。一个人 一次只能买一张票 ,如果需要购买更多票,他必须走到 队尾 重新排队(瞬间 发生,不计时间)。如果一个人没有剩下需要买的票,那他将会 离开 队伍。

返回位于位置 k(下标从 0 开始)的人完成买票需要的时间(以秒为单位)。

示例 1:

输入:tickets = [2,3,2], k = 2
输出:6
解释:

队伍一开始为 [2,3,2],第 k 个人以下划线标识。
在最前面的人买完票后,队伍在第 1 秒变成 [3,2,1]。
继续这个过程,队伍在第 2 秒变为[2,1,2]。
继续这个过程,队伍在第 3 秒变为[1,2,1]。
继续这个过程,队伍在第 4 秒变为[2,1]。
继续这个过程,队伍在第 5 秒变为[1,1]。
继续这个过程,队伍在第 6 秒变为[1]。第 k 个人完成买票,所以返回 6。

示例 2:

输入:tickets = [5,1,1,1], k = 0
输出:8
解释:
队伍一开始为 [5,1,1,1],第 k 个人以下划线标识。
在最前面的人买完票后,队伍在第 1 秒变成 [1,1,1,4]。
继续这个过程 3 秒,队伍在第 4 秒变为[4]。
继续这个过程 4 秒,队伍在第 8 秒变为[]。第 k 个人完成买票,所以返回 8。

解题思路:
1.初始化时间变量
2.遍历所有人,直到目标人购买完所有票
3.如果当前人还有票需要购买,减少对应人的票数,每买一张票花费 1 秒
4.如果目标人已经完成购票,跳出循环

完整代码:
  class Solution {
      public int timeRequiredToBuy(int[] tickets, int k) {
          // 初始化时间变量
          int time = 0;
          // 获取票数数组的长度,即人的数量
          int n = tickets.length;

          // 遍历所有人,直到目标人购买完所有票
          while (tickets[k] > 0) {
              // 遍历所有的人
              for (int i = 0; i < n; i++) {
                  // 如果当前人还有票需要购买
                  if (tickets[i] > 0) {
                      // 减少对应人的票数
                      tickets[i]--;
                      // 每买一张票花费 1 秒
                      time++;
                  }

                  // 如果目标人已经完成购票,跳出循环
                  if (i == k && tickets[k] == 0) {
                      break;
                  }
              }
          }

          return time;
      }
  }

标签:tickets,需要,int,票数,变为,队伍,2073,买票
From: https://www.cnblogs.com/java-cheng/p/18439023

相关文章

  • 关于PHP方面需要掌握的一些基础语法
    成长路上不孤单......
  • FFmpeg 初学者需要掌握的基础知识和实用技能。每个部分可以深入讲解,提供具体的命令示
    FFmpeg初级使用教程大纲1. FFmpeg简介什么是FFmpegFFmpeg的主要功能安装FFmpeg2. 基本命令格式FFmpeg的基本命令结构输入与输出文件的指定常用选项的介绍3. 常用命令示例转换视频格式示例:将MP4转换为AVI提取音频示例:从视频中提取音频压缩视......
  • 优秀的软件工程师需要具备什么
    优秀的软件工程师不仅需要扎实的技术功底,还需要具备多个方面的软技能和职业素养,以应对复杂多变的技术挑战和业务需求。以下是优秀软件工程师应具备的条件:1.扎实的技术基础编程技能:精通至少一种编程语言,熟练掌握面向对象编程、数据结构和算法。能够编写高效、可维护、可扩展的......
  • PowerShell 脚本禁用 Realtek Audio Console 中的前面板插孔检测,通常需要修改注册表项
     PowerShell脚本禁用RealtekAudioConsole中的前面板插孔检测,通常需要修改注册表项。以下是一个示例脚本,用于执行此操作:powershellCopyCode#设置注册表路径$registryPath="HKLM:\SOFTWARE\Realtek\Audio\RtkNGUI\Settings"#检查注册表路径是否存在if(-not(Test-......
  • 一个示例 .reg 文件,用于优化和调优 Realtek High Definition Audio 声卡的设置。请根
    一个示例.reg文件,用于优化和调优RealtekHighDefinitionAudio声卡的设置。请根据需要进行调整。创建 .reg 文件打开记事本。复制以下内容:CopyCodeWindowsRegistryEditorVersion5.00;优化RealtekHighDefinitionAudio设置[HKEY_LOCAL_MACHINE\SOFTW......
  • 不需要驱动的自动化
    importasynciofromDecoratorimportDecoratorfromplaywright.async_apiimportasync_playwrightclassMyClass:@Decorator.retryasyncdefrun_html(self,playwright,url:str):#启动Chromium浏览器,无头模式(headless=True表示不显示浏览器界面)......
  • 关于VSCode里需要用的一些插件总结
    在使用vscode编辑器的时候,经常需要安装一些插件来帮助我们进行开发,现在对可能用到的一些插件进行总结1.openinbrowser-------------在浏览器中打开,如果不装这个,无法在右键的时候在浏览器运行(必备)2.AutoRenameTag--------------修改HTML标签时,自动修改匹配的标签3. Aut......
  • carplay需要mfi认证吗?
    CarPlay是苹果公司推出的一种车载智能系统,它将用户的iPhone(或其他兼容的iOS设备)与汽车的仪表盘和控制系统无缝集成,为驾驶者提供更加便捷、智能且安全的驾驶体验。MFi认证是苹果公司(AppleInc.)对其授权配件厂商生产的外置配件的一种标识使用许可,全称是MadeforiPhone/iPod/iPad。通......
  • 7个大学生最需要的AI工具,高质高效完成课业,大把时间丰富课余生活!
    随着新学期的钟声悠扬响起,大学校园再次迎来了充满活力的新生与经验丰富的学长学姐们。面对已经开始的繁忙课程与丰富多彩的作业挑战,给学生朋友精心挑选了7款前沿AI工具,旨在助力每一位学子高效完成作业、激发无限创意、增强学习专注力,并显著提升学术表现,让学习之旅以及课余生活......
  • 从对微信支付一无所知,到成为“专家”原来只需要1天
    摘要:本文通过一个为企业网站接入微信支付的例子,引导大家利用AI解决工作中的问题,提高效率。未来,程序员需要专注于提升创造力,积累经验才是无价的。对于现在想入行的程序员朋友,笔者建议早日放弃这个想法,直接投身于AI领域。放下这种认为AI永远不及人类聪明的偏见,认为AI所做的事情都......