生活随笔
收集整理的這篇文章主要介紹了
(蓝桥杯)2018JAVA B组 日志分析
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
日志統(tǒng)計
小明維護著一個程序員論壇。現(xiàn)在他收集了一份"點贊"日志,日志共有N行。其中每一行的格式是:
ts id
表示在ts時刻編號id的帖子收到一個"贊"。
現(xiàn)在小明想統(tǒng)計有哪些帖子曾經是"熱帖"。如果一個帖子曾在任意一個長度為D的時間段內收到不少于K個贊,小明就認為這個帖子曾是"熱帖"。
具體來說,如果存在某個時刻T滿足該帖在[T, T+D)這段時間內(注意是左閉右開區(qū)間)收到不少于K個贊,該帖就曾是"熱帖"。
給定日志,請你幫助小明統(tǒng)計出所有曾是"熱帖"的帖子編號。
【輸入格式】 第一行包含三個整數(shù)N、D和K。 以下N行每行一條日志,包含兩個整數(shù)ts和id。
對于50%的數(shù)據(jù),1 <= K <= N <= 1000
對于100%的數(shù)據(jù),1 <= K <= N <= 100000
0 <= ts<= 100000 0 <= id <= 100000
【輸出格式】 按從小到大的順序輸出熱帖id。每個id一行。
【輸入樣例】
7 10 2
0 1
0 10
10 10
10 1
9 1
100 3
100 3
【輸出樣例】 1 3
資源約定: 峰值內存消耗(含虛擬機) < 256M CPU消耗 < 1000ms
請嚴格按要求輸出,不要畫蛇添足地打印類似:“請您輸入…” 的多余內容。
所有代碼放在同一個源文件中,調試通過后,拷貝提交該源碼。 不要使用package語句。不要使用jdk1.7及以上版本的特性。
主類的名字必須是:Main,否則按無效代碼處理。
思路:利用map將每個id的獲贊時間分類,通過循環(huán)獲贊時間查看此id是否為熱帖
1 package a;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.HashMap;
6 import java.util.Iterator;
7 import java.util.List;
8 import java.util.Map;
9 import java.util.Scanner;
10
11 public class test {
12 public static void main(String[] args) {
13 Scanner in =
new Scanner(System.in);
14 int n =
in.nextInt();
15 int d =
in.nextInt();
16 int k =
in.nextInt();
17 // 通過id對獲贊時間分類
18 Map<Integer, String> map =
new HashMap<Integer, String>
();
19 for(
int i=0; i<n; i++
) {
20 int ts =
in.nextInt();
21 int id =
in.nextInt();
22 map.put(id, map.getOrDefault(id, "")+","+
ts);
23 }
24 // 熱帖id
25 List<Integer> host =
new ArrayList<Integer>
();
26 // 對每個id進行處理
27 Iterator<Integer> iter =
map.keySet().iterator();
28 while(iter.hasNext()) {
29 int id =
iter.next();
30 // 將時間序列轉化為整數(shù)類型
31 String[] s = map.get(id).split(","
);
32 int[] new_s =
new int[s.length-1
];
33 for(
int i=0; i<s.length-1; i++
) {
34 new_s[i] = Integer.parseInt(s[i+1
]);
35 }
36 // 由于得到的獲贊時間無序,首先進行排序
37 Arrays.sort(new_s);
38 // 進行判斷,i和j控制熱帖的獲贊數(shù)
39 for(
int i=k-1, j=0; i<new_s.length; i++,j++
) {
40 if(new_s[i]-new_s[j]<d && !
host.contains(id)) {
41 host.add(id);
42 System.out.println(id);
43 }
44 }
45
46 }
47 in.close();
48 }
49 }
?
轉載于:https://www.cnblogs.com/tianyahai/p/10485149.html
總結
以上是生活随笔為你收集整理的(蓝桥杯)2018JAVA B组 日志分析的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。