有没有大佬看看思路对不对。。。笔试没时间写了。。 class Solution {     public static void main(String[] args) {         Scanner in = new Scanner(System.in);         int nums = in.nextInt();         int[] ids = new int[nums];         for (int i = 0; i < nums; i++) {             ids[i] = in.nextInt();         }         //两个栈存储每个分组的最大最小值         Stack<Integer> subMax = new Stack<>();         Stack<Integer> subMin = new Stack<>();         int min = 0;         for (int i = nums - 1; i >= 0; i--) {             int temp = ids[i];             if (i == nums - 1) {                 subMax.add(temp);                 subMin.add(temp);                 continue;             }             if (temp <= subMin.peek()) {                 subMin.add(temp);                 subMax.add(temp);             }else {                 int count = 0;                 boolean modified = false;                 while (!subMax.isEmpty() && temp > subMax.peek()) {                     subMax.pop();                     count++;                     modified = true;                 }                 min = subMin.peek();                 while (count != 0) {                     subMin.pop();                     count--;                 }                 if (modified) {                     subMax.add(temp);                     subMin.add(min);                 }             }         }         System.out.println(subMax.size());     } }
点赞 2
牛客网
牛客企业服务