每日一题——最近的请求次数

简介: 每日一题——最近的请求次数

933. 最近的请求次数

題目描述:

题意解释:

就是返回时间在[t-3000, t]的请求数:

借助例子来理解:

["RecentCounter", "ping", "ping", "ping", "ping"]

[[],[642],[1849],[4921],[5936]]

在代码中就是:

func main() {
  rc := Constructor() // 初始化一个空切片
  fmt.Println(rc.Ping(642),
    rc.Ping(1849), 
    rc.Ping(4921),
    rc.Ping(5936),
  )
}

第一次请求:时间为642 ,此时为空,不存在比他早3000的请求,加入队列[642]

第二次请求:时间为1849,此时队列的第一个元素并不比这次请求时间早3000,所以依旧加入队列[642,1849]

第三次请求: 时间为4921,(这里是个转折点)可以看到我们此时队列里俩次请求时间都比这次早3000多,所以要把他俩剔除掉,将这次请求加入队列[4921]

第四次请求:时间为5936,此时队列里的元素并不比这次请求早3000,所以加入队列即可[4921,5936]

所以输出结果为[1,2,1,2]

题解:

type RecentCounter struct {
  queue []int
}
func Constructor() RecentCounter {
  return RecentCounter{make([]int, 0)}
}
func (rc *RecentCounter) Ping(t int) int {
  rc.queue = append(rc.queue, t)
  // 如果队列中,请求的时间不在[t-3000,t](这个是t是最新一次请求的时间)以内,就给他截掉
  for rc.queue[0] < t-3000 {
    rc.queue = rc.queue[1:]
  }
  return len(rc.queue)
}

提交结果:

相关文章
|
8月前
LeetCode题解-让所有学生保持开心的分组方法数
LeetCode题解-让所有学生保持开心的分组方法数
|
6天前
leetcode-1688:比赛中的配对次数
leetcode-1688:比赛中的配对次数
25 0
|
10月前
|
存储 Cloud Native
【刷题日记】871. 最低加油次数
本次刷题日记的第 78 篇,力扣题为:871. 最低加油次数,困难
|
6天前
|
存储 算法 前端开发
【算法训练营】队列 合集(1) 933. 最近的请求次数 || LCR 041. 数据流中的移动平均值 || 1700. 无法吃午餐的学生数量
【算法训练营】队列 合集(1) 933. 最近的请求次数 || LCR 041. 数据流中的移动平均值 || 1700. 无法吃午餐的学生数量
33 0
|
7月前
|
算法 前端开发
前端算法-最近的请求次数
前端算法-最近的请求次数
|
9月前
|
C++
【AcWing每日一题】3400. 统计次数
【AcWing每日一题】3400. 统计次数
41 0
LeetCode每日一题(18)——最近的请求次数
最近的请求次数 1.题目 2.示例 3.思路 4.代码
LeetCode——933. 最近的请求次数
LeetCode——933. 最近的请求次数
78 0
每日一题——最低加油次数
每日一题——最低加油次数
61 0
每日一题——最低加油次数
【每日一题Day69】转换字符串的最少操作次数 |贪心
实现:遍历整个字符串,如果当前字符为’X’,那么进行转换,指针后移三位;如果当前字符为’O’,那么指针后移一位
60 0