每日一题 --- 933. 最近的请求次数[力扣][Go]

简介: 每日一题 --- 933. 最近的请求次数[力扣][Go]

题目:

写一个 RecentCounter 类来计算特定时间范围内最近的请求。

请你实现 RecentCounter 类:

RecentCounter() 初始化计数器,请求数为 0 。

int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。

保证 每次对 ping 的调用都使用比之前更大的 t 值。

示例 1:

输入:

[“RecentCounter”, “ping”, “ping”, “ping”, “ping”]

[[], [1], [100], [3001], [3002]]

输出:

[null, 1, 2, 3, 3]

解释:

RecentCounter recentCounter = new RecentCounter();

recentCounter.ping(1); // requests = [1],范围是 [-2999,1],返回 1

recentCounter.ping(100); // requests = [1, 100],范围是 [-2900,100],返回 2

recentCounter.ping(3001); // requests = [1, 100, 3001],范围是 [1,3001],返回 3

recentCounter.ping(3002); // requests = [1, 100, 3001, 3002],范围是 [2,3002],返回 3

提示:

1 <= t <= 109

保证每次对 ping 调用所使用的 t 值都 严格递增

至多调用 ping 方法 104 次

解题代码:

type RecentCounter struct {
  // 请求数
  num int
  // 请求队列
  min []int
}
func Constructor() RecentCounter {
  return RecentCounter{num: 0,min: make([]int,1)}
}
func (this *RecentCounter) Ping(t int) int {
  this.num++
  this.min = append(this.min, t)
  for i := 0; i < len(this.min) - 1; i++ {
    if t >= this.min[i] + 3000 && t <= this.min[i + 1] + 3000{
      this.min = this.min[i:]
      //fmt.Printf("%v\n",this.min)
      this.num -= i
      break
    }
  }
  return this.num
}


相关文章
|
7月前
|
Go C++
【力扣】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
【2月更文挑战第18天】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
61 6
|
7月前
|
Go C++
【力扣】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
【2月更文挑战第17天】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
44 8
每日一题 --- 942. 增减字符串匹配[力扣][Go]
每日一题 --- 942. 增减字符串匹配[力扣][Go]
每日一题 --- 942. 增减字符串匹配[力扣][Go]
|
算法 Go
每日一题 --- 442. 数组中重复的数据[力扣][Go]
每日一题 --- 442. 数组中重复的数据[力扣][Go]
每日一题 --- 442. 数组中重复的数据[力扣][Go]
每日一题 --- 713. 乘积小于 K 的子数组[力扣][Go]
每日一题 --- 713. 乘积小于 K 的子数组[力扣][Go]
每日一题 --- 713. 乘积小于 K 的子数组[力扣][Go]
每日一题 --- 606. 根据二叉树创建字符串[力扣][Go]
每日一题 --- 606. 根据二叉树创建字符串[力扣][Go]
每日一题 --- 606. 根据二叉树创建字符串[力扣][Go]
|
Go 索引
每日一题 ---- 599. 两个列表的最小索引总和[力扣][Go]
每日一题 ---- 599. 两个列表的最小索引总和[力扣][Go]
每日一题 ---- 599. 两个列表的最小索引总和[力扣][Go]
|
存储 测试技术 Go
每日一题 --- 393. UTF-8 编码验证[力扣][Go]
每日一题 --- 393. UTF-8 编码验证[力扣][Go]
每日一题 --- 393. UTF-8 编码验证[力扣][Go]
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]
每日一题 --- 590. N 叉树的后序遍历[力扣][Go]
每日一题 --- 二叉树的遍历[力扣][Go]
每日一题 --- 二叉树的遍历[力扣][Go]
每日一题 --- 二叉树的遍历[力扣][Go]