题目
A long array A[] is given to you. There is a sliding window of size w which is moving from the very left of the array to the very right. You can only see the w numbers in the window. Each time the sliding window moves rightwards by one position. Following is an example:
The array is [5 4 3 4 4], and w is 3. The output is [5 4 5]
[5 4 3] 4 4: 5
5 [4 3 4] 4: 4
5 4 [3 4 4]: 4
Input: A long array A[], and a window width w
Output: An array B[], B[i] is the maximum value of from A[i] to A[i+w-1]
Requirement: Find a good optimal way to get B[i]
解法 O(N)
class Element {
int value;
int index;
}
每次移动window {
//将window内的新元素放入maxheap,同时要保存每个元素在数组中的位置;
maxheap.push(new Element(value, index));
while(true) {
Element element = maxheap.peek();
if ( element.index在window内 ) {
print element.value;
break;
}
else maxheap.pop();
}
}