java返回数组中 找出其中的最长山脉子数组
时间: 2023-11-18 12:39:59 浏览: 121
要找出数组中的最长山脉子数组,可以使用以下Java代码:
```java
public class LongestMountain {
public static int longestMountain(int[] arr) {
int n = arr.length;
int maxLength = 0;
for (int i = 1; i < n - 1; ) {
if (arr[i] > arr[i - 1] && arr[i] > arr[i + 1]) {
int left = i - 1;
int right = i + 1;
while (left > 0 && arr[left] > arr[left - 1]) {
left--;
}
while (right < n - 1 && arr[right] > arr[right + 1]) {
right++;
}
maxLength = Math.max(maxLength, right - left + 1);
i = right;
} else {
i++;
}
}
return maxLength;
}
public static void main(String[] args) {
int[] arr = {2, 1, 4, 7, 3, 2, 5};
int longestMountainLength = longestMountain(arr);
System.out.println("最长山脉子数组的长度为: " + longestMountainLength);
}
}
```
上述代码中,`longestMountain()` 方法接收一个整数数组 `arr`,并返回最长山脉子数组的长度。在方法中,我们使用一个循环遍历数组中的每个元素。当找到山脉的中间元素时,我们向左和向右扩展,直到找到山脉的两个端点。然后,我们计算山脉的长度,并与之前的最长山脉长度进行比较,更新最长山脉的长度。最后,我们返回最长山脉的长度。
在示例代码中,我们创建了一个整数数组 `arr`,并调用 `longestMountain()` 方法来计算最长山脉子数组的长度。最后,我们打印出计算结果。
输出结果为:最长山脉子数组的长度为: 5
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)