滑动窗口最大值c++
时间: 2024-09-26 15:16:33 浏览: 39
php-leetcode题解之滑动窗口最大值.zip
滑动窗口最大值是指在一个给定的数组或序列中,每次移动一个小窗口,然后找出窗口内的局部最大值。这个过程通常用于数据处理和算法竞赛中,比如在线查询、实时监控等场景。
在C++中,我们可以用一个变量存储当前找到的最大值,同时维护两个指针,一个指向窗口的开始位置,另一个指向窗口的结束位置。当移动右指针时,如果新元素大于当前最大值,则更新最大值;反之,若新元素不大于前一个元素,说明当前窗口内最大值已经不再增大,可以直接将左指针向右移动一位,这样就减小了窗口大小并保留了最大值。
以下是一个简单的示例代码:
```cpp
#include <vector>
using namespace std;
int maxInWindow(vector<int>& nums, int k) {
if (k <= 0 || nums.empty()) return -1; // 确保窗口大小合法
int left = 0;
int right = k - 1;
int maxVal = nums[left]; // 初始化最大值为左端点数值
while (right < nums.size()) {
if (nums[right] > maxVal) {
maxVal = nums[right];
}
nums[left] = nums[right]; // 移动左指针
left++;
right++;
}
return maxVal;
}
```
在这个例子中,函数`maxInWindow`接收一个整数数组`nums`和窗口大小`k`,返回窗口内的最大值。
阅读全文