
分析:
要想题目只要求求出最长山脉的长度(简单来说就是满足条件的数组的大小)根据条件![]()
1 山脉必须是对称的
2 山脉的长度必须大于等于三
3 除了首位每个元素都可以作为山顶
得出结果:
package algrothm.leetcode;
/**
* Created by wr on 2018/10/17.
*/
class Solution{
public int longestMountain(int[] A){
if (A.length==0 || A.length < 3) return 0;
int res = 0;
for (int i = 1; i < A.length-1; i++){
if (A[i-1] < A[i] && A[i+1] < A[i]){
int left = i - 1;
int right = i + 1;
while (left > 0 && A[left-1] < A[left]){
left--;
}
while (right < A.length-1 && A[right+1] < A[right]){
right++;
}
res = Math.max(res, (right-left+1));
}
}
return res;
}
}
public class long845 {
public static void main(String[] args) {
int[] A = {2,1,4,7,3,2,5};
int ret = new Solution().longestMountain(A);
String out = String.valueOf(ret);
System.out.print(out);
}
}
运行结果

寻找最长山脉序列
本文介绍了一种算法,用于在整数数组中找到最长的山脉序列。山脉定义为一个连续的子数组,其形状类似山脉,即从左边界开始递增到达顶峰后递减,并且长度至少为3。算法通过遍历数组,识别可能的山顶位置并扩展左右边界来确定最长的山脉长度。
677

被折叠的 条评论
为什么被折叠?



