Skip to content

Commit 70dab83

Browse files
authored
feat: add swift implementation to lcof problem: No.59.1 (doocs#2950)
1 parent 00d9bc9 commit 70dab83

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

lcof/面试题59 - I. 滑动窗口的最大值/README.md

+30
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,36 @@ public class Solution {
254254
}
255255
```
256256

257+
#### Swift
258+
259+
```swift
260+
class Solution {
261+
func maxSlidingWindow(_ nums: [Int], _ k: Int) -> [Int] {
262+
let n = nums.count
263+
var ans = [Int]()
264+
var deque = [Int]()
265+
266+
for i in 0..<n {
267+
if !deque.isEmpty && deque.first! < i - k + 1 {
268+
deque.removeFirst()
269+
}
270+
271+
while !deque.isEmpty && nums[deque.last!] <= nums[i] {
272+
deque.removeLast()
273+
}
274+
275+
deque.append(i)
276+
277+
if i >= k - 1 {
278+
ans.append(nums[deque.first!])
279+
}
280+
}
281+
282+
return ans
283+
}
284+
}
285+
```
286+
257287
<!-- tabs:end -->
258288

259289
<!-- solution:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution {
2+
func maxSlidingWindow(_ nums: [Int], _ k: Int) -> [Int] {
3+
let n = nums.count
4+
var ans = [Int]()
5+
var deque = [Int]()
6+
7+
for i in 0..<n {
8+
if !deque.isEmpty && deque.first! < i - k + 1 {
9+
deque.removeFirst()
10+
}
11+
12+
while !deque.isEmpty && nums[deque.last!] <= nums[i] {
13+
deque.removeLast()
14+
}
15+
16+
deque.append(i)
17+
18+
if i >= k - 1 {
19+
ans.append(nums[deque.first!])
20+
}
21+
}
22+
23+
return ans
24+
}
25+
}

0 commit comments

Comments
 (0)