-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathContents.swift
69 lines (49 loc) · 1.67 KB
/
Contents.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//: [上一道题](@previous)
/*:
# 有效的山脉数组
- 题号:[941](https://leetcode-cn.com/problems/valid-mountain-array/)
- 难度:简单
- 描述:
给定一个整数数组 `A`,如果它是有效的山脉数组就返回 `true`,否则返回 `false`。
让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:
- `A.length >= 3`
- 在 `0 < i < A.length - 1` 条件下,存在 `i` 使得:
- `A[0] < A[1] < ... A[i-1] < A[i]`
- `A[i] > A[i+1] > ... > A[A.length - 1]`
*/
//: ## Code
import Foundation
func validMountainArray(_ A: [Int]) -> Bool {
guard A.count >= 3 else { return false }
var target = A[0]
var isAscending = true
var result = false
for i in 1 ..< A.count {
let value = A[i]
if value == target {
result = false
break
}
if isAscending {
if value < target {
if i == 1 { break }
result = true
isAscending = false
}
} else if value > target {
result = false
break
}
target = value
}
return result
}
//: ## Test
print(validMountainArray([2,1])) // false
print(validMountainArray([3,5,5])) // false
print(validMountainArray([0,3,2,1])) // true
print(validMountainArray([0,1,2,3,4,5,6,7,8,9])) // false
print(validMountainArray([2,0,2])) // false
print(validMountainArray([9,8,7,6,5,4,3,2,1,0])) // false
print(validMountainArray([1,7,9,5,4,1,2])) // false
//: [下一道题](@next)