提供另一个思路     public int house(int[] person) {         int n = person.length;         if (n == 0) return 0;         if (n == 1) return 1;                  //记录左侧开始的房子数量         int[] left = new int[n];         //记录右侧开始的房子数量         int[] right = new int[n];                  left[0] = person[0] > person[1] ? 2 : 1;         for (int i = 1; i < n; i++) {             if (person[i] > person[i - 1]) left[i] = left[i - 1] + 1;             else left[i] = 1;         }         right[n - 1] = person[n - 1] > person[n - 2] ? 2 : 1;         for (int i = n - 2; i >= 0; i--) {             if (person[i] > person[i + 1]) right[i] = right[i + 1] + 1;             else right[i] = 1;         }         int total = 0;         //取左侧和右侧的最大值         for(int i = 0; i<n; i++){             total += Math.max(left[i], right[i]);         }         return total;     } }
1.png