leetcode - [239] Sliding Window Maximum
来源:互联网 发布:植物学 网络 编辑:程序博客网 时间:2024/05/16 15:17
public class Solution { // 思路:使用一个队列来保存当前窗口内的可能出现的最大值的候选者 (看了discuss) LinkedList<Integer> queue = new LinkedList<Integer>(); public int[] maxSlidingWindow(int[] nums, int k) { if (nums == null || nums.length == 0 || k < 1) { return new int[0]; } ArrayList<Integer> maxValues = new ArrayList<Integer>(); int i = 0; for (; i < nums.length && i < k; i++) { insert2Queue(nums[i]); } maxValues.add(queue.get(0)); if (i == nums.length) { // nums.length <= k, 直接返回queue首部的值 return convert(maxValues); } for (int j = i; j < nums.length; j++) { if (nums[j-k] == queue.peek()) { queue.remove(0); } insert2Queue(nums[j]); maxValues.add(queue.peek()); // 当前队列首部的元素是窗口中最大的值 } return convert(maxValues); } // 插入队列,使用以下原则:移除队列中所有小于当前插入值val的值 private void insert2Queue(int val) { LinkedList<Integer> tmpQueue = new LinkedList<Integer>(); if (queue.size() > 0) { for (int i = 0; i < queue.size(); i++) { if (queue.get(i) >= val) { tmpQueue.add(queue.get(i)); } } } tmpQueue.add(val); queue = tmpQueue; } private int[] convert(List<Integer> values) { if (values == null || values.size() == 0) { return new int[0]; } int[] rets = new int[values.size()]; int i = 0; for (int val : values) { rets[i++] = val; } return rets; }}
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 Sliding Window Maximum
- [LeetCode]Sliding Window Maximum
- leetcode - Sliding Window Maximum
- LeetCode - Sliding Window Maximum
- 个人时代
- RecyclerView基本用法:CascadeView (七)
- Easyui弹出Dialog时,Dialog中的Combobox的url会加载两次,不明原因,只能其他方法解决。
- 页面性能的基础因素 - 《Designing for Performance》
- android_activity的数据传递
- leetcode - [239] Sliding Window Maximum
- 45. Jump Game II
- Tokenization for beginners
- 设计模式之建造者模式
- 289. Game of Life
- NVIDIA GeForce Driver Installation on Debian Jessie Linux 8 64bit
- 边看书边做边发挥-图书软件-10
- c++ 去除字符串中的空格和标点符号 (remove_if 函数的用法)
- Leetcode:195. Tenth Line以及管道命令pipeline