//暴力法 // class Solution { // public int[] dailyTemperatures(int[] T) { // // // int n = T.length; // int [] end = new int[n]; // for(int i = 0;i < n; i++){ // int cur = T[i]; // for(int j = i+1;j<n;j++){ // if(T[j] > cur){ // end[i] = j-i; // break; // }else{ // end[i] = 0; // } // } // } // return end; // } // } //利用单调栈 class Solution { public int[] dailyTemperatures(int[] T) { //定义一个结果数组 int n = T.length ; int[] end = new int[n]; //定义一个栈,存放数组的下标 Stack<Integer> stack = new Stack<>(); for(int i=0;i < n;i++){ //如果当前的温度 大于 栈顶的 温度 while(!stack.isEmpty() && T[i] > T[stack.peek()]){ //end[stack.pop()] = i - stack.peek();// int index = stack.pop(); end[index] = i - index ; } stack.push(i); } return end; } }