算法总结
2022/8/22 1:26:23
本文主要是介绍算法总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.最近请求次数写一个 RecentCounter
类来计算特定时间范围内最近的请求。
请实现 RecentCounter
类:
RecentCounter()
初始化计数器,请求数为 0 。int ping(int t)
在时间t
添加一个新请求,其中t
表示以毫秒为单位的某个时间,并返回过去3000
毫秒内发生的所有请求数(包括新请求)。确切地说,返回在[t-3000, t]
内发生的请求数。
保证 每次对 ping
的调用都使用比之前更大的 t
值。
题解:根据官网的例子可以可以看出它是吗,每次添加一个时间t,然后判断以往的时间t是否在[t-3000, t]
中,即可以用一个数据结构存放这个时间t,然后把不满足条件的t剔除,然后返回个数,注意因为每次对 ping
的调用都使用比之前更大的 t
值。所以可以用一个队列来完成,达到更少的时间复杂度。
package com.chenghaixiang.jianzhi2.day14; import java.util.ArrayDeque; import java.util.Queue; /** * @author 程海翔 * @school 石家庄铁道大学 */ public class Office042 { } //写一个 RecentCounter 类来计算特定时间范围内最近的请求。 // //请实现 RecentCounter 类: // // RecentCounter() 初始化计数器,请求数为 0 。 // int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。 //保证 每次对 ping 的调用都使用比之前更大的 t 值。 class RecentCounter { //每次对 ping 的调用都使用比之前更大的 t 值。所以可以用队列 Queue<Integer> queue; public RecentCounter() { queue=new ArrayDeque<>(); } public int ping(int t) { queue.add(t); //检索删除所以没有达到区间下限的值 while (queue.peek()<t-3000){ //检索并删除此队列的头,如果此队列为空,则返回 null queue.poll(); } return queue.size(); } }View Code
2.
这篇关于算法总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27数据结构与算法面试题详解及练习
- 2024-12-27网络请求面试题详解与实战
- 2024-12-27数据结构和算法面试真题详解与实战教程
- 2024-12-27网络请求面试真题解析与实战教程
- 2024-12-27数据结构和算法大厂面试真题详解与实战指南
- 2024-12-27TS大厂面试真题解析与应对策略
- 2024-12-27TS大厂面试真题详解与解析
- 2024-12-27网站安全入门:如何识别和修复漏洞
- 2024-12-27SQL注入基础教程
- 2024-12-27初学者指南:理解和修复跨域漏洞