
获得徽章 0
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇沸点
leetcode 新开的算法题, 有效的山脉数组。
给定一个整数数组,判断它是不是有效的山脉数组。
[3,5,5], 这样的不是,没有起伏。
[0,3,2,1], 这个就是,先起后落。
可以这么看:
一个人爬山,先升后降。只有一个山峰,对应的数组就满足山脉的要求。
对应代码:
```
func validMountainArray(_ A: [Int]) -> Bool {
var i = 0
while i < A.count - 1, A[i] < A[i + 1]{
i += 1
}
if i == 0 || i == A.count - 1 {
return false
}
while i < A.count - 1, A[i] > A[i + 1]{
i += 1
}
return i == A.count - 1
}
```
方案挺多的,
还可以设想,一个人从左边爬山,另一位从右边爬山。
如果他们到达的是同一个山顶,他们就会见面。
对应代码:
```
func validMountainArray(_ A: [Int]) -> Bool {
let n = A.count
var i = 0
var j = n-1
while i + 1 < n , A[i] < A[i+1]{
i+=1
}
while j > 0 , A[j] < A[j-1]{
j-=1
}
return i == j && i > 0 && i < n - 1
}
```
我用的是 Swift
给定一个整数数组,判断它是不是有效的山脉数组。
[3,5,5], 这样的不是,没有起伏。
[0,3,2,1], 这个就是,先起后落。
可以这么看:
一个人爬山,先升后降。只有一个山峰,对应的数组就满足山脉的要求。
对应代码:
```
func validMountainArray(_ A: [Int]) -> Bool {
var i = 0
while i < A.count - 1, A[i] < A[i + 1]{
i += 1
}
if i == 0 || i == A.count - 1 {
return false
}
while i < A.count - 1, A[i] > A[i + 1]{
i += 1
}
return i == A.count - 1
}
```
方案挺多的,
还可以设想,一个人从左边爬山,另一位从右边爬山。
如果他们到达的是同一个山顶,他们就会见面。
对应代码:
```
func validMountainArray(_ A: [Int]) -> Bool {
let n = A.count
var i = 0
var j = n-1
while i + 1 < n , A[i] < A[i+1]{
i+=1
}
while j > 0 , A[j] < A[j-1]{
j-=1
}
return i == j && i > 0 && i < n - 1
}
```
我用的是 Swift
展开
4
2
赞了这篇文章
赞了这篇文章
赞了这篇文章