-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy path10.4.swift
49 lines (36 loc) · 874 Bytes
/
10.4.swift
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public func solution(inout A : [Int]) -> Int {
// write your code in Swift 2.2
let n = A.count
var peaks: [Int] = []
if n < 3 {
return 0
}
for i in 1...n-2 {
if A[i - 1] < A[i] && A[i] > A[i + 1] {
peaks.append(i)
}
}
if peaks.count == 0 {
return 0
}
var maxPlaced = 0
for var i = n; i > 0; i -= 1 {
if (i - 1) * i + 2 > n {
continue
}
var prevPeak = peaks.first
var placed = 1
for j in 1..<peaks.count {
if peaks[j] - prevPeak! < i {
continue
}
placed += 1
prevPeak = peaks[j]
if placed >= i {
break
}
}
maxPlaced = max(maxPlaced, placed)
}
return maxPlaced
}