Sliding Window Maximum

来源:互联网 发布:mysql数据库设计原则 编辑:程序博客网 时间:2024/04/30 14:34

题目

Sliding Window Maximum

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();  }}



0 0
原创粉丝点击