找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

微信名称:美国米群网

微 信 号:MeetQun

微信QQ:群: 320065698

查看: 278|回复: 3
收起左侧

[刷题记录板] 362. Design Hit Counter

[复制链接]

23

主题

0

精华

28

积分

新米人

Rank: 1

积分
28
发表于 11-29-2016 05:17 AM | 显示全部楼层 |阅读模式

亲!马上注册或者登录会查看更多内容!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
  1.     // 优化解法, 以秒为单位进行存储而不是以事件为单位进行存储。
  2.     Queue<Integer> queue;
  3.     HashMap<Integer,Integer> map;
  4.     int count;
  5.     /** Initialize your data structure here. */
  6.     public HitCounter() {
  7.         count=0;
  8.         map = new HashMap<>();
  9.         queue = new LinkedList<>();
  10.     }
  11.    
  12.     /** Record a hit.
  13.         @param timestamp - The current timestamp (in seconds granularity). */
  14.     public void hit(int timestamp) {
  15.         if (map.containsKey(timestamp)){
  16.             map.put(timestamp,map.get(timestamp)+1);
  17.         }
  18.         else{
  19.             map.put(timestamp,1);
  20.             queue.add(timestamp);
  21.         }
  22.         count++;
  23.     }
  24.    
  25.     /** Return the number of hits in the past 5 minutes.
  26.         @param timestamp - The current timestamp (in seconds granularity). */
  27.     public int getHits(int timestamp) {
  28.         while (!queue.isEmpty() && timestamp-300>= queue.peek()){
  29.             int tmp = queue.poll();
  30.             count-=map.get(tmp);
  31.             map.remove(tmp);
  32.         }
  33.         return count;
  34.     }


  35. ----------------------------------------------   
  36. Queue<Integer> queue;
  37.     int count;
  38.     /** Initialize your data structure here. */
  39.     public HitCounter() {
  40.         queue = new LinkedList<>();
  41.         count=0;
  42.     }
  43.    
  44.     /** Record a hit.
  45.         @param timestamp - The current timestamp (in seconds granularity). */
  46.     public void hit(int timestamp) {
  47.         queue.add(timestamp);
  48.         count++;
  49.     }
  50.    
  51.     /** Return the number of hits in the past 5 minutes.
  52.         @param timestamp - The current timestamp (in seconds granularity). */
  53.     public int getHits(int timestamp) {
  54.         while (!queue.isEmpty() &&  timestamp-300 >= queue.peek()){
  55.             queue.poll();
  56.             count--;
  57.         }
  58.         return count;
  59.     }
复制代码

0

主题

0

精华

2

积分

新米人

Rank: 1

积分
2
发表于 11-29-2016 05:17 AM | 显示全部楼层
感谢taoqi610分享~~~
回复 支持 反对

使用道具 举报

0

主题

0

精华

3

积分

新米人

Rank: 1

积分
3
发表于 12-1-2016 04:16 AM | 显示全部楼层
感谢taoqi610分享~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表