Count Hills and Valleys in an Array
给一组数字, 找山峰和山谷, 这里数字相同就认为是同在一个山峰or山谷. 求山峰山谷总数.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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; } } |