给定一个数组,数组中的每个元素代表该位置的海拔高度。0表示平地,>=1时表示属于某个山峰,山峰的定义为当某个位置的左右海拔均小于自己的海拔时,该位置为山峰。数组起始位置计算时可只满足一边的条件。
输入描述 一个整数数组
输出描述 输出符合条件的山峰的个数
示例1: 输入: [0,1,2,3,2,4]
输出: 2
示例2 :
输入: [3,0,3,4,1]
输出: 2
import java.util.Arrays;
import java.util.Scanner;
public class MountSum山脉个数 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
if (!(str == null || str.length() == 0)) {
int arr[] = Arrays.stream(str.substring(1, str.length() - 1).split(",")).mapToInt(Integer::parseInt).toArray();
System.out.println("arr山脉个数:" + getMountSum(arr));
}
}
/**
* @Description: 获取山脉个数
* @param arr
* @return: int
* @Author: zengxianjin
* @Date: 2024/8/6 10:24
*/
public static int getMountSum(int[] arr) {
int count = 0;
//遍历山脉数组,判断是否为山峰
for (int i = 0; i < arr.length; i++) {
//判断初始位置是否为山峰
if (i == 0) {
//初始位置判断右边是否为平地
if (arr[i] > arr[i + 1]) {
count++;
}
continue;
}
//判断结束位置是否为山峰
if (i == arr.length - 1) {
//结束位置判断左边是否为平地
if (arr[i] > arr[i - 1]) {
count++;
}
continue;
}
//判断两边是否为平地
if (arr[i] > arr[i - 1] && arr[i] > arr[i + 1])
count++;
}
return count;
}
}