933zuiji

本文介绍了一个名为RecentCounter的类的设计与实现过程,该类用于计算在过去3000毫秒内的请求次数。通过维护一个时间戳列表和一个指向最早有效时间戳的索引,RecentCounter能够高效地统计有效请求的数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写一个 RecentCounter 类来计算最近的请求。

它只有一个方法:ping(int t),其中 t 代表以毫秒为单位的某个时间。

返回从 3000 毫秒前到现在的 ping 数。

任何处于 [t - 3000, t] 时间范围之内的 ping 都将会被计算在内,包括当前(指 t 时刻)的 ping。

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

示例:

输入:inputs = [“RecentCounter”,“ping”,“ping”,“ping”,“ping”], inputs = [[],[1],[100],[3001],[3002]]
输出:[null,1,2,3,3]
提示:

每个测试用例最多调用 10000 次 ping。
每个测试用例会使用严格递增的 t 值来调用 ping。
每次调用 ping 都有 1 <= t <= 10^9。
解题思路
本题其实并不复杂,但是我在实现时由于思考的方向错了,导致了花费大量时间去完成这个题目。
一开始我的思路是仿照LRU算法,实现一个会移除超出有效范围[t - 3000, t]的缓存。
但是随着不断的尝试后,发现其实只需要统计时有效的ping即可。期间遇到过好几次执行超时的情况,所以需要优化统计有效ping时的检索区间。
所以最终实现思路如下:

需要一个存储所有ping时间的数组list和记录最小有效ping时间的list索引minIndex
每次ping就从minIndex开始检索list,直到遇到数组list中的ping时间item有效(即item在[t - 3000, t])则中断循环,否则(item<t-3000)minIndex自增。
实现代码
/**

    1. 最近的请求次数
  • @author RJH

  • create at 2018/11/4
    /
    public class RecentCounter {
    /
    *

    • 存储ping时间的List
      /
      private List list;
      /
      *
    • 最小有效ping时间的索引
      */
      private int minIndex=0;

    public RecentCounter() {
    list=new LinkedList<>();
    }

    public int ping(int t) {
    list.add(t);
    for(int i=minIndex;i<list.size();i++){//从minIndex开始遍历List
    Integer item=list.get(i);
    if(item<t-3000){//判断最小的有效ping时间是否无效
    ++minIndex;
    }else{
    break;
    }
    }
    //返回有效的元素个数
    return list.size()-minIndex;
    }
    }

现在要处理任务B,任务B是需要我处理既存代码中的问题,以下是我获得的资料: 背景: ・コカ・コーラ ボトラーズジャパンホールディングス (2579)の株主優待情報欄>権利付最終日に「前回:2024/12/26」との記載がある。 ・コカ・コーラ ボトラーズジャパンホールディングスが株主優待導入を決定したのは今年2月のため、前回の日付は存在し得ない。 https://www.ccbj-holdings.com/news/detail.php?id=1655 ・データ提供元の東洋経済に聴取したが東洋経済のデータではないとのこと 依頼内容: 以下2点よろしくお願いいたします。 ・コカ・コーラ ボトラーズジャパンホールディングス (2579)の株主優待情報欄>権利付最終日に「前回:2024/12/26」との記載があるため、当該記載の削除 ・「前回:2024/12/26」との情報がどこのデータを基にしたものなのかの調査 引用 編集 #3 (SBI大連)林 源 さんが18日前に更新 ・コカ・コーラ ボトラーズジャパンホールディングス (2579)の株主優待情報欄>権利付最終日に「前回:2024/12/26」との記載があるため、当該記載の削除 PREFERENTIAL_SEARCH(株主優待検索テーブル) ┗━PS_L_MONTH_DAY(前回権利付最終日) ※PS_L_MONTH_DAY(前回権利付最終日) = NULL であれば、 前回:- で表示されます。 yu_mkDetail 【株主優待】優待詳細HTMLを作成・圧縮し、Searchにアップする。 https://gitlab.jp.sbibits.com/AB/dc-migration/attokyo/servers/sec-bizapl-batch/etjbatch/yutai/-/blob/master/export1/home/etjbatch/bin/yutai/mkYutaiDetail.pl#L806 #権利付最終日(yyyy/mm/dd) @strn = (substr($myRsS{'PS_N_MONTH_DAY'}, 0,4), substr($myRsS{'PS_N_MONTH_DAY'}, 4,2), substr($myRsS{'PS_N_MONTH_DAY'}, 6,2)); @strl = (substr($myRsS{'PS_L_MONTH_DAY'}, 0,4), substr($myRsS{'PS_L_MONTH_DAY'}, 4,2), substr($myRsS{'PS_L_MONTH_DAY'}, 6,2)); $ndate = "$strn[0]/$strn[1]/$strn[2]"; $ldate = "$strl[0]/$strl[1]/$strl[2]"; if($myRsS{'PS_L_MONTH_DAY'} ne '' && $myRsS{'PS_N_MONTH_DAY'} ne ''){ $myTr =~ s/--LAST_DAY--/次回:$ndate 前回:$ldate/; }elsif($myRsS{'PS_L_MONTH_DAY'} eq '' && $myRsS{'PS_N_MONTH_DAY'} ne ''){ $myTr =~ s/--LAST_DAY--/次回:$ndate 前回:-/; }else{ $myTr =~ s/--LAST_DAY--/次回:- 前回:-/; } ・「前回:2024/12/26」との情報がどこのデータを基にしたものなのかの調査 PREFERENTIAL_SEARCH(株主優待検索テーブル) ┗━PS_L_MONTH_DAY(前回権利付最終日) を作成する処理: yu_upSearch 【株主優待】優待検索用のテーブルを作成する。 https://gitlab.jp.sbibits.com/AB/dc-migration/attokyo/servers/sec-bizapl-batch/etjbatch/yutai/-/blob/master/export1/home/etjbatch/bin/yutai/upSearchTable.pl https://gitlab.jp.sbibits.com/AB/dc-migration/attokyo/servers/sec-bizapl-batch/etjbatch/yutai/-/blob/master/export1/home/etjbatch/bin/yutai/ldr/SEARCH.ctl#L65 IN_STBN_0002 [C][株主優待案件][CRU]【株主優待】各種検索項目を株主優待検索テーブルに登録 https://gitlab.jp.sbibits.com/AB/dc-migration/attokyo/servers/sec-bizapl-batch/etjbatch/yutai/-/blob/master/export1/home/etjbatch/bin/yutai/upSearchTableAdd.pl#L180 引用 編集 #5 (SBI大連)林 源 さんが17日前に更新 p1-sec-bizapl-batch-a /export3/batch/data/toyo/backup/ Dhdatj02_YYYYMMDD.csv ↓ IN_STBN_0001 [C][株主優待案件][CR]【株主優待】こだわり検索の条件ファイルを作成 https://gitlab.jp.sbibits.com/AB/dc-migration/attokyo/servers/sec-bizapl-batch/etjbatch/yutai/-/blob/master/export1/home/etjbatch/bin/yutai/mkToyoDFile.pl ↓ yutai_toyo.csv ↓ IN_STBN_0002 [C][株主優待案件][CRU]【株主優待】各種検索項目を株主優待検索テーブルに登録 https://gitlab.jp.sbibits.com/AB/dc-migration/attokyo/servers/sec-bizapl-batch/etjbatch/yutai/-/blob/master/export1/home/etjbatch/bin/yutai/upSearchTableAdd.pl#L180 ↓ PREFERENTIAL_SEARCH 引用 編集 #11 (SBI大連)林 源 さんが15日前に更新 原因 該当銘柄(2579)の優待権利確定月は6月と12月で、バッチにて前回権利付最終日を計算したところ、前回の日付は20241226となります。 ロジックには、前回権利付最終日が上場日未満の場合、NULLと設置しますが、 東洋経済からのファイル「Dhdatj02_yyyymmdd.csv」の上場日(19940615)が前回権利付最終日より早いので、20241226のまま設置されてしまいました。 呉 輝 追加コメント • 2025-05-26 16:06:28 @清水 勇弥さん >>現在対応策をUATにてテスト中であること、今週中に対応完了する見込みであること承知いたしました。 >>原因の概要についてお聞きしたいのですが可能でしょうか。 原因: 現行は前回の権利付有無か判断しなく【権利確定月】のみで処理されているため、今回の不具合な事象(嘘の権利日)は発生されてしまっています。     ※上場日の同日ではなく、後日に権利優待が行われる場合は問い合わせ事象は発生されてしまうケースが多いようです 臨時対策:マスター補正      ※補正前:  「前回:2024/12/26」     ※補正後:  「前回:-」 恒久対策:修正依頼 ORインシデントで対応する予定 横展開 :ほかの銘柄がないか確認中です 【次回:2025/06/26】過ぎになりましたら自然に解消されるがその前に補正しないと消さないですので臨時対策として対応すると考えております。 呉 輝 作業メモ•2025-05-26 17:54:08 メモ 呉 輝 追加コメント • 2025-05-26 17:53:40 @清水 勇弥さん >>・コカ・コーラ ボトラーズジャパンホールディングス (2579)の株主優待情報欄>権利付最終日に「前回:2024/12/26」との記載があるため、当該記載の削除 05/27~06/26にデータ補正で対応させていただきます。 補正前:  「前回:2024/12/26」 補正後:  「前回:-」 以上是我获得的全部资料,附件是既存相关的三个代码,请结合资料分析我提供的代码,我想知道错误的前回:2024/12/26是如何被代码计算出来的。用汉语回答我,但专业术语(如上场日等)保留日语词汇
06-09
内容概要:论文提出了一种基于空间调制的能量高效分子通信方案(SM-MC),将传输符号分为空间符号和浓度符号。空间符号通过激活单个发射纳米机器人的索引来传输信息,浓度符号则采用传统的浓度移位键控(CSK)调制。相比现有的MIMO分子通信方案,SM-MC避免了链路间干扰,降低了检测复杂度并提高了性能。论文分析了SM-MC及其特例SSK-MC的符号错误率(SER),并通过仿真验证了其性能优于传统的MIMO-MC和SISO-MC方案。此外,论文还探讨了分子通信领域的挑战、优势及相关研究工作,强调了空间维度作为新的信息自由度的重要性,并提出了未来的研究方向和技术挑战。 适合人群:具备一定通信理论基础,特别是对纳米通信和分子通信感兴趣的科研人员、研究生和工程师。 使用场景及目标:①理解分子通信中空间调制的工作原理及其优势;②掌握SM-MC系统的具体实现细节,包括发射、接收、检测算法及性能分析;③对比不同分子通信方案(如MIMO-MC、SISO-MC、SSK-MC)的性能差异;④探索分子通信在纳米网络中的应用前景。 其他说明:论文不仅提供了详细的理论分析和仿真验证,还给出了具体的代码实现,帮助读者更好地理解和复现实验结果。此外,论文还讨论了分子通信领域的标准化进展,以及未来可能的研究方向,如混合调制方案、自适应调制技术和纳米机器协作协议等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值