【题目描述】
给定一个整数数组 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[B.length - 1]
【示例1】
输入:[2,1]
输出:false
【示例2】
输入:[3,5,5]
输出:false
【示例3】
输入:[0,3,2,1]
输出:true
【图】
hint_valid_mountain_array (1).png
像上图这样的数组就是山脉数组!
【思路】
1、山脉数组:也就是说数组arr中间有一个index,index左边都小于arr[index],右边都大于arr[index]
2、首先找到这个index,随着数组遍历index++
3、遍历index左边,arr[index] > arr[index+1],false
4、遍历index右边,arr[index] < arr[index+1],false
5、返回index+1 == arr.count
代码:
func validMountainArray(_ A: [Int]) -> Bool {
var add = 0
while add+1 < A.count && A[add+1] > A[add] {
add+=1
}
if add == 0 || add == A.count-1 {
return false
}
while add+1 < A.count && A[add+1] < A[add]{
add+=1
}
return add+1 == A.count
}
网友评论