给定一个整数数组nums和一个整数k,找出在滑动窗口内大小为k的所有连续子数字中的最大值。
示例输入:
示例输出:
[3 3 5 5 6 7]
解题思路:
使用双端队列(deque)维护滑动窗口内的元素,并将当前窗口的最大值存储在结果数组中。从左到右遍历数组,并将每个元素添加到 deque 的末尾。然后,在保持 deque 中的元素数量不超过 k 的情况下,从deque的开头删除较小的元素。这样,deque的第一个元素就是当前窗口的最大值。将该元素添加到输出数组中,并继续向右移动窗口并重复此过程。
以下是使用Golang实现的代码:
测试代码:
结果与示例输出相同。
领取专属 10元无门槛券
私享最新 技术干货