首页 > 编程语言 >算法总结

算法总结

时间:2022-08-20 22:56:52浏览次数:58  
标签:总结 请求 int ping RecentCounter queue 算法 3000

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.

标签:总结,请求,int,ping,RecentCounter,queue,算法,3000
From: https://www.cnblogs.com/chenghaixiang/p/16608981.html

相关文章

  • PHP正则表达式总结(/g,/i,/U等等)
    https://blog.csdn.net/websites/article/details/19199435 PHP正则表达式总结(\nml,\nm,\un,\xn等等)PHP正则表达式语法一个正则表达式就是由普通字符(例如字符a到......
  • HTML5摇一摇以及音频播放问题优化总结
    1.摇一摇不够灵敏、摇动很多次没有响应的问题、原来摇一摇代码是从网络Copy的,活动上线后,发现部分手机摇一摇监测效果不够灵敏,摇动很多次都没有响应,恨不得把手机砸了,于是优......
  • 一周总结
    任务量越来越多啦知识点:Haskell语言是纯函数编程语言Spring启动命令:java-jarxxx.jargit提交本地代码到远程仓库:---暂存区(虚拟工作区)1.gitadd.(跟踪所有新文件......
  • Java跨线程传递数据方式总结
    在微服务调用链中,需要定义一个共享变量,在整个调用链中传递不跨线程的ThreadLocal线程变量,在当前线程任意地方都可共享(可理解为同一线程内部的全局变量)publicc......
  • Ubuntu安装abaqus2022总结
    1.网上下载的安装包解压后好多文件在linux下没有执行权限,会导致安装失败。可以一次性使用 chmod-R+x./ 命令添加或者遇到一个添加一个。2.isight的安装过程脚本使用......
  • 进程调度算法
    操作系统有三大调度机制,分别是进程调度、内存页面置换和磁盘调度算法。进程调度算法定义进程调度算法也称CPU调度算法,毕竟进程是由CPU调度的,当CPU空闲时,操作系统......
  • Redis知识点总结
    Redis的淘汰策略有哪几种?volatile-lru从已设置过期时间的数据集中挑选最近最少使用的数据淘汰volatile-ttl从已设置过期时间的数据集中挑选将要过期的数据淘汰......
  • 5. 总结tomcat的核心组件以及根目录结构
    5. 总结tomcat的核心组件以及根目录结构 tomcat根目录结构 目录说明bin服务启动、停止等相关程序和文件conf配置文件lib库目录......
  • Hadoop常见的文件格式及压缩算法
    前言 该文章中将会整理一些大数据中常见的文件格式及压缩算法的理论知识,作为后期实践的理论指导。理论+实践才会更方便用这些文件格式和压缩算法。    目前hadoop中......
  • 8.20总结
    BlueMary的战役地图\(solution\)暴力卡常时间复杂度较高\(O(n^7)\)优化后可过:倒叙枚举边长,一旦找到就输出ACCode#include<bits/stdc++.h>usingnamespacestd......