데이터 흐름 슬라이딩 창 평균(LintCode 제목)
10172 단어 LintCode
배경.
네크라인 (LintCode) 의 제목은 자기가 하나 쓰고, 다른 사람의 것을 참조하여 하나 쓴다
자체 코드: 총 3686ms 소요
public class MovingAverage {
private int size;
private Queue<Integer> queue;
/*
* @param size: An integer
*/public MovingAverage(int size) {
// do intialization if necessary
this.size=size;
queue=new ArrayDeque(size);
}
/*
* @param val: An integer
* @return:
*/
public double next(int val) {
// write your code here
int length;
double result=0.00000;
if((length=queue.size())==size){//
queue.poll();
queue.add(val);
Iterator iterator=queue.iterator();
while(iterator.hasNext()){
result+=(Integer)iterator.next();
}
return result/length;
}else{
queue.add(val);
length=queue.size();
Iterator iterator=queue.iterator();
while(iterator.hasNext()){
result+=(Integer)iterator.next();
}
return result/length;
}
}
}
다른 사람의 코드: 총 1732ms 소모
public class MovingAverage {
private final int maxSize;
private final Queue<Integer> window;
private long sum = 0;
public MovingAverage(int maxSize) {
this.maxSize = maxSize;
this.window = new ArrayDeque<>(maxSize + 1);
}
public double next(int val) {
window.add(val);
sum += val;
if (window.size() > maxSize) {
sum -= window.poll();
}
return (double) sum / window.size();
}
}
깨닫다
이게 차이인가, 웃고 울고...그리고 이게 제일 좋은 게 아니야..(60%만 넘는) 아직 임무는 무겁고 갈 길은 먼 것 같아. 힘내, 소란아.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
lintcode--94. 두 갈래 나무의 최대 경로와두 갈래 트리를 제시하고 경로와 최대를 찾을 수 있습니다. 경로는 어느 노드에서 시작하고 끝낼 수 있습니다. (경로와 두 노드 사이에 있는 경로의 노드 값의 합) 두 갈래 나무 한 그루를 주시오. 되돌아오다 뒷순서에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.