题解 | #合唱队#
合唱队
https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4
import Foundation
var i = 0
while let line = readLine() {
let parts = line.split(separator: " ")
if (i == 0) {
i = i + 1
continue
}
if (i == 2) {
break
}
i = i + 1
// print(parts)
var arr:[Int] = parts.map { return Int(String($0))!}
var upArr:[Int] = [Int](repeating: 0, count: arr.count)
var downArr:[Int] = [Int](repeating: 0, count: arr.count)
for i in 0 ... parts.count - 1 {
if i == 0 {
upArr[0] = 1
continue
}
var up = 1
if i > 0 {
for k in 0 ... i - 1 {
if arr[i] > arr[k] {
upArr[i] = upArr[k] + 1
up = max(up, upArr[i])
}
}
}
upArr[i] = up
var down = 1
var j = parts.count - 1 - i
if j == parts.count - 1 {
downArr[j] = 1
} else {
for k in j + 1 ... parts.count - 1 {
if arr[j] > arr[k] {
downArr[j] = downArr[k] + 1
down = max(down, downArr[j])
}
}
}
downArr[j] = down
}
var maxValue = 1
for i in 0 ... arr.count - 1 {
maxValue = max(upArr[i] + downArr[i] - 1, maxValue)
}
print(arr.count - maxValue)
}
#终于自己想出来了一个算法题#