题目地址:

https://www.lintcode.com/problem/buy-passes/description

有一个人叫Alex,想去博物馆买票,它在队伍中站的位置是kkk,再给定一个正整数数组,每个数代表队伍里每个人想买的票的数量。服务台卖票每次只会卖一张,如果一个人买票没买全,就会走到队伍末尾继续排队。忽略到队尾重新排队的时间,假设每个人买票所花时间都是111个单位,问Alex买完票要花多久。

考虑站在Alex前面的人,如果这个人需要买的票的数量大于等于Alex要买的数量aaa,那么Alex花在等他的时间就是aaa,原因是每次Alex要买一张票的时候,他们就会在前面先买;而如果这个人需要买的票的数量小于aaa,比如说是bbb,那么Alex买前bbb张票的时候需要等这个人买票,之后就不用等了。
而对于站在Alex后面的人,可以考虑Alex买完一张票后排在队尾时的情况,按照上面分析的思路,只需要把上面的aaa变成a−1a-1a−1考虑即可。

代码如下:

public class Solution {/*** @param arr: the line* @param k: Alex place* @return: the time when Alex requires to buy all passes*/public int buyPasses(int[] arr, int k) {// Write your code here.if (arr == null || arr.length == 0) {return 0;}int time = 0;for (int i = 0; i < arr.length; i++) {// 如果站在Alex之前,那么Alex等他的时间就是arr[i]和Alex自己票数的较小者。// 同时顺便把Alex自己买票的时间加进去// 如果站在Alex之后,那么Alex等他的时间就是arr[i]和Alex自己票数减一的较小者。if (i <= k) {time += Math.min(arr[i], arr[k]);} else {time += Math.min(arr[i], arr[k] - 1);}}return time;}
}

时间复杂度O(n)O(n)O(n),空间O(1)O(1)O(1)。

【Lintcode】1851. Buy Passes相关推荐

  1. 【LintCode】算法题 1443. 最长AB子串

    描述 给你一个只由字母'A'和'B'组成的字符串s,找一个最长的子串,要求这个子串里面'A'和'B'的数目相等,输出该子串的长度. 这个子串可以为空. s的长度n满足 2<=n<=1000 ...

  2. 【lintcode】树形数据结构之Maxtree, Tree iterator, remove bst node, 优先队列之动态中位数Median, 矩阵dfs之word search II,最大连

    解析 max ksubarray sum:  最大和 of 连续子序列 =>   最大和 of  k份连续子序列 属于dp,30行代码搞定,注意一些边界. substr diff:  无queu ...

  3. 【POJ】2828 Buy Tickets(线段树+特殊的技巧/splay)

    http://poj.org/problem?id=2828 一开始敲了个splay,直接模拟. tle了.. 常数太大.. 好吧,说是用线段树.. 而且思想很拽.. (貌似很久以前写过貌似的,,) ...

  4. 【Lintcode】1413. Tree

    题目地址: https://www.lintcode.com/problem/tree/description 给定一个无向图,其有树性质,并且顶点编号为111的为树根(也就是这个图是个有根树).要求 ...

  5. 【Lintcode】1645. Least Subsequences

    题目地址: https://www.lintcode.com/problem/1645/ 给定一个长nnn的数组AAA,问AAA最少能分解为多少个严格递减的子序列之并. 在AAA上定义偏序关系< ...

  6. 【Lintcode】1375. Substring With At Least K Distinct Characters

    题目地址: https://www.lintcode.com/problem/substring-with-at-least-k-distinct-characters/description 给定一 ...

  7. 【Lintcode】1647. Path Search

    题目地址: https://www.lintcode.com/problem/path-search/description 给定一个无向图,再给定两个点SSS和TTT,求所有SSS到TTT的简单路径 ...

  8. 【Lintcode】1799. Sequence Summation

    题目地址: https://www.lintcode.com/problem/sequence-summation/description 给定三个数i,j,ki,j,ki,j,k,计算i+(i+1) ...

  9. 【Lintcode】1367. Police Distance

    题目地址: https://www.lintcode.com/problem/1367/ 给定一个m×nm\times nm×n的矩阵,只含1,0,−11,0,-11,0,−1,111表示警察,000 ...

最新文章

  1. 【转载】Python常用模块之sys
  2. python.re模块
  3. #1407 : 后缀数组二·重复旋律2 (不可重叠最长重复子串问题)
  4. 文件上传 jqueryForm
  5. VCL组件之Name属性
  6. 前端第二篇-学成在线首页(作品)
  7. Modern Effective C++
  8. SEO新手快速入门教程
  9. 折腾不止的追梦人--个人公众号
  10. U盘有占用空间,但无文件或者都变成了快捷方式
  11. win10家庭版升级专业版
  12. C++入门>>初识类
  13. python可以连续赋值吗_Python连续赋值的两个要点
  14. 1059 习题4-12 求建筑物高度
  15. c语言float可以 取余吗,C语言fmod()函数:对浮点数取模(求余)
  16. 强制页面运行于IE8模式下
  17. 2014美图网校园招聘Android实习工程师笔试试卷详解
  18. Python介绍及编程环境搭建
  19. Spring Cloud Gateway rce
  20. 什么类型的SSL证书有利于网站安全?

热门文章

  1. kali:Nessus扫描漏洞并用msf利用攻击xp系统
  2. 从追MM谈Java的23种设计模式
  3. linux so reuseport,linux – SO_ATTACH_REUSEPORT_CBPF套接字选项意外行为
  4. web.config中的连接字符串 ---关于 providerName 特性
  5. python简单的画图代码爱心,怎么用python代码画心
  6. 虚拟机安装kali系统最新版2020.4,和别人不一样的方法(附软件换国内源,QQ下载,搜狗输入法下载,输入命令提示权限不足)教程
  7. Java第12篇输入输出I/O和ASCII码
  8. html+css基础入门学习教程标记语言——图片替换
  9. 洛克人java下载_JAVA 1.7并发之LinkedTransferQueue原理理解
  10. mysql的mis安装各种版本