Count Hills and Valleys in an Array
给一组数字, 找山峰和山谷, 这里数字相同就认为是同在一个山峰or山谷. 求山峰山谷总数.
class Solution {
public int countHillValley(int[] nums) {
int res = 0;
int n = nums.length;
LinkedList<Integer> list = new LinkedList<>();
for(int nn : nums){
if(!list.isEmpty() && list.getLast() == nn)
continue;
list.add(nn);
}
if(list.size() < 3)
return 0;
int[] ary = new int[list.size()];
int j = 0;
for(int nn : list)
ary[j++] = nn;
for(int i = 1; i < ary.length - 1; i++){
if((ary[i - 1] < ary[i] && ary[i] > ary[i + 1]) || ary[i - 1] > ary[i] && ary[i] < ary[i + 1])
res++;
}
return res;
}
}