Leetcode 845 数组的山脉 JAVA
思路:
1.首先找到上山点,用一个变量 j 来开始上山。
2.计算山脉的长度。 长度分为两部分,一部分是上山,一部分是下山。 这题要注意边界。
3.保存山脉的长度 j - i + 1。 为什么要 +1 ?因为我们之前写的上山点是 A[ i ] > A [ i - 1] 。 i - 1 的时候,才是上山点。 j 是山脚的位置。
4.更新 i = j -1 。 为什么要 -1? 因为判断山脉结束时 A[ j ] < A [ j - 1] 不成立,所以 j - 1 才是山脚的位置。
代码:
class Solution {
public int longestMountain(int[] A) {
int len = A.length;
if(len < 3) return 0;
int j;
int ans = 0;
for(int i = 1; i < len; i++) {
boolean flag = false;
if(A[i] > A[i-1]) {
j = i;
while(j < len && A[j] > A[j-1]) {
j++;
}
while(j < len && A[j] < A[j-1]) {
j++;
flag = true;
}
if(flag == true){
ans = Math.max(ans,j-i+1);
}
i = j-1;
}
}
return ans;
}
}

浙公网安备 33010602011771号