forked from doocs/leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSolution.cs
26 lines (25 loc) · 819 Bytes
/
Solution.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System.Collections.Generic;
public class Solution {
public int[] MaxSlidingWindow(int[] nums, int k) {
if (nums.Length == 0) return new int[0];
var result = new int[nums.Length - k + 1];
var descOrderNums = new LinkedList<int>();
for (var i = 0; i < nums.Length; ++i)
{
if (i >= k && nums[i - k] == descOrderNums.First.Value)
{
descOrderNums.RemoveFirst();
}
while (descOrderNums.Count > 0 && nums[i] > descOrderNums.Last.Value)
{
descOrderNums.RemoveLast();
}
descOrderNums.AddLast(nums[i]);
if (i >= k - 1)
{
result[i - k + 1] = descOrderNums.First.Value;
}
}
return result;
}
}