我正试图从天才哥们那里解决这个问题。 http://www.talentbuddy.co/challenge/52a9121cc8a6c2dc91481f8d5233cc274af0110af382f40f
我的代码编译并运行小输入,但是对于以下输入给出错误的ans- http://tb-eval4.talentbuddy.co/5411559648d3e7eb5100024191810645628720530000.html
我的代码如下 -
import java.util.*;
class MyClass {
public void tweets_per_second(Integer[] tps, Integer k) {
PriorityQueue<Integer> pq =new PriorityQueue<Integer>(k, new Comparator<Integer>(){
public int compare(Integer i1, Integer i2){
if (i1.intValue()< i2.intValue()){
return 1;
}
else if(i1.intValue() ==i2.intValue()){
return 0;
}
else {
return -1;
}
}
});
for(int i=0;i<tps.length;i++){
if (pq.size()<=k){
pq.add(tps[i]);
System.out.println(pq.peek());
}
else{
pq.remove(tps[i-k]);
pq.add(tps[i]);
System.out.println(pq.peek());
}
}
}
public static void main(String[] args) {
MyClass t = new MyClass();
Integer[] tps = {6,9,4,7,4,1};
t.tweets_per_second(tps, 3);
}
}
有人可以让我知道我做错了什么吗?任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
代码完全正确。在页面的末尾,您可以看到以下内容:
Error: your code didn't finish in less than 2 seconds.
告诉你所有你需要知道的事情。
至于为什么你的代码很慢 - 虽然使用PriorityQueue或任何内置的集合等总体来说是一个好主意,但在这种情况下却并非如此。我不想对其实施方式做出有根据的猜测,但add, remove, peek
中的一个不是O(1)并且会耗费你的时间。