免费下载网站模板筑梦网站建设
news/
2025/9/23 12:33:51/
文章来源:
免费下载网站模板,筑梦网站建设,平利县城乡建设局网站,免费表白网页在线生成制作给你一个整数数组 nums#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。示例 1#xff1a;输入#xff1a;nums [1,3,-1,-3,5,3,6,7], k 3
输出有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。示例 1输入nums [1,3,-1,-3,5,3,6,7], k 3
输出[3,3,5,5,6,7]
解释
滑动窗口的位置 最大值
--------------- -----
[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7 31 3 [-1 -3 5] 3 6 7 51 3 -1 [-3 5 3] 6 7 51 3 -1 -3 [5 3 6] 7 61 3 -1 -3 5 [3 6 7] 7
示例 2输入nums [1], k 1
输出[1]
提示 eetCode 解答1class Solution {public int[] maxSlidingWindow(int[] nums, int k) {int[] res new int[nums.length - k 1];LinkedListInteger queue new LinkedList();// 如果队列不为空且当前考察元素大于等于队尾元素则将队尾元素移除。// 直到队列为空或当前考察元素小于新的队尾元素for (int right 0; right nums.length; right) {while(!queue.isEmpty() nums[queue.peekLast()] nums[right]){queue.pollLast();}// 存储元素下标queue.offer(right);// 计算窗口左侧边界int left Math.max(0,right-k1);// 当队首元素的下标小于滑动窗口左侧边界left时// 表示队首元素已经不再滑动窗口内因此将其从队首移除while(queue.peek()left){queue.poll();}// 由于数组下标从0开始因此当窗口右边界right1大于等于窗口大小k时// 意味着窗口形成。此时队首元素就是该窗口内的最大值if(rightk-1) {res[left] nums[queue.peek()];}}return res;}}
解答二不知道为啥不通过参考代码随想录也是单调队列的思想 class Solution {public int[] maxSlidingWindow(int[] nums, int k) {ListInteger ans new ArrayList();pQueue q new pQueue();for (int i 0; i k; i) {q.push(nums[i]);}ans.add(q.front());for (int i k; i nums.length; i) {q.pop(nums[i-k]);q.push(nums[i]);ans.add(q.front());}int size ans.size();int[] ret new int[size];for (int i 0; i ret.length; i) {ret[i] ans.get(i);}return ret;}}class pQueue {LinkedListInteger queue new LinkedList();public void push(Integer x) {while (!queue.isEmpty() queue.peekLast() x) {queue.pollLast();}queue.offer(x);}public void pop(Integer x) {if (!queue.isEmpty() queue.peek() x) {queue.poll();}}public Integer front() {if (!queue.isEmpty()) {return queue.peek();} else {return null;}}}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912552.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!