LeetCode 239. Sliding Window Maximum
来源:互联网 发布:epson机器人编程 编辑:程序博客网 时间:2024/06/14 02:14
Given an array nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves right by one position.
For example,
Given nums = [1,3,-1,-3,5,3,6,7]
, and k = 3.
Window position Max--------------- -----[1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 3 1 3 [-1 -3 5] 3 6 7 5 1 3 -1 [-3 5 3] 6 7 5 1 3 -1 -3 [5 3 6] 7 6 1 3 -1 -3 5 [3 6 7] 7
Therefore, return the max sliding window as [3,3,5,5,6,7]
.
Note:
You may assume k is always valid, ie: 1 ≤ k ≤ input array's size for non-empty array.
Follow up:
Could you solve it in linear time?
这道题目非常难,需要用到deque
java
class Solution { public int[] maxSlidingWindow(int[] nums, int k) { if (nums == null || nums.length == 0 || nums.length < k || k <= 0) { return new int[]{}; } int[] result = new int[nums.length - k + 1]; int index = 0; Deque<Integer> deque = new LinkedList<>(); for (int i = 0; i < k; i++) { while (!deque.isEmpty() && nums[i] > nums[deque.peekLast()]) { deque.pollLast(); } deque.offerLast(i); } for (int i = k; i < nums.length; i++) { result[index++] = nums[deque.peekFirst()]; while (!deque.isEmpty() && nums[i] > nums[deque.peekLast()]) { deque.pollLast(); } while (!deque.isEmpty() && deque.peekFirst() <= i - k) { deque.pollFirst(); } deque.offerLast(i); } result[index++] = nums[deque.peekFirst()]; return result; }}
阅读全文
0 0
- [leetcode] 239.Sliding Window Maximum
- [LeetCode]239.Sliding Window Maximum
- leetcode 239. Sliding Window Maximum
- LeetCode 239. Sliding Window Maximum
- [leetcode] 239. Sliding Window Maximum
- leetcode.239. Sliding Window Maximum
- LeetCode-239.Sliding Window Maximum
- leetcode 239. Sliding Window Maximum
- Leetcode-239. Sliding Window Maximum
- Leetcode 239. Sliding Window Maximum
- leetcode 239.Sliding Window Maximum
- [LeetCode]239. Sliding Window Maximum
- Leetcode 239. Sliding Window Maximum
- [LeetCode]239. Sliding Window Maximum
- Leetcode 239. Sliding Window Maximum
- Leetcode 239. Sliding Window Maximum
- [leetcode]239. Sliding Window Maximum
- LeetCode 239. Sliding Window Maximum
- 洛谷 P2626 斐波那契数列(升级版)
- 爬取网易云音乐评论《安河桥》,进行分析
- 第十五周LeetCode
- angular 的小应用 增删查 排序等
- Maven系列之可选依赖
- LeetCode 239. Sliding Window Maximum
- View的工作原理之draw
- deeplab运行指南
- CC框架实践:实现先登录再进入目标界面的功能
- xcrun: error: invalid active developer path
- DragGridDemo 频道管理器的使用(demo)
- table导出成excel
- 【工具】这是一篇获取工具的帖子
- Deep Learning(深度学习)学习笔记整理系列之(二)