845. 数组中的最长山脉
把符合下列属性的数组 arr 称为 山脉数组 :
arr.length >= 3
存在下标 i(0 < i < arr.length - 1),满足
arr[0] < arr[1] < ... < arr[i - 1] < arr[i]
arr[i] > arr[i + 1] > ... > arr[arr.length - 1]
给出一个整数数组 arr,返回最长山脉子数组的长度。如果不存在山脉子数组,返回 0 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-mountain-in-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public int longestMountain(int[] arr) {
if (arr == null || arr.length < 3) {
return 0;
}
int ans = 0;
boolean up = true;
int left = 1, right = 0;
for (int i = 1; i < arr.length; ++i) {
if (up) {
if (arr[i] > arr[i - 1]) {
left++;
} else {
if (arr[i] == arr[i - 1]) {
left = 1;
} else {
up = false;
right = 1;
}
}
} else {
if (arr[i] < arr[i - 1]) {
right++;
} else {
if (arr[i] == arr[i - 1]) {
left = 1;
} else {
up = true;
left = 2;
}
right = 0;
}
}
if (left >= 2 && right >= 1) {
ans = Math.max(ans, left + right);
}
}
return ans;
}
}
心之所向,素履以往 生如逆旅,一苇以航

浙公网安备 33010602011771号