查找每个 k 大小的连续子数组的最大值的 C++ 程序
假设我们有一个包含n个元素和一个值k的数组。我们必须为每个大小为k的连续子数组找到最大值。
所以,如果输入像arr=[3,4,6,2,8],k=3,那么输出将是大小为3的连续子数组是[3,4,6],[4,6,2],[6,2,8],所以最大元素是6、6和8。
示例
让我们看看以下实现以获得更好的理解-
#include#include #include using namespace std; int main(){ vector arr = {3,4,6,2,8}; int k = 3; deque Qi(k); int i; for (i = 0; i < k; ++i){ while ( (!Qi.empty()) && arr[i] >= arr[Qi.back()]) Qi.pop_back(); Qi.push_back(i); } for ( ; i < arr.size(); ++i){ cout << arr[Qi.front()] << " "; while ( (!Qi.empty()) && Qi.front() <= i - k) Qi.pop_front(); while ( (!Qi.empty()) && arr[i] >= arr[Qi.back()]) Qi.pop_back(); Qi.push_back(i); } cout << arr[Qi.front()] << endl; }
输入
{3,4,6,2,8}, 3输出结果6 6 8
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下