classSolution { public: vector<int> maxSlidingWindow(vector<int>& nums, int k){ int n = nums.size(); priority_queue<pair<int, int>> pq; for (int i = 0; i < k; ++i) { pq.emplace(nums[i], i); }
vector<int> res; res.push_back(pq.top().first); for (int i = k; i < n; ++i) { pq.emplace(nums[i], i); while (pq.top().second <= i-k) { pq.pop(); } res.push_back(pq.top().first); } return res; } };
classSolution{ publicint[] maxSlidingWindow(int[] nums, int k) { int n = nums.length; 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); }
int[] res = newint[n - k + 1]; res[0] = nums[deque.peekFirst()]; for (int i = k; i < n; ++i) { while (!deque.isEmpty() && nums[i] >= nums[deque.peekLast()]) { deque.pollLast(); } deque.offerLast(i); while (deque.peekFirst() <= i - k) { deque.pollFirst(); } res[i - k + 1] = nums[deque.peekFirst()]; } return res; } }