import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param weights int整型一维数组 * @return int整型一维数组 */ public int[] weightGrowth (int[] weights) { // write code here Stack<Integer> stack = new Stack<>(); int[] arr = new int[weights.length]; Arrays.fill(arr,-1); for (int j = 0; j < weights.length; j++) { while(!stack.isEmpty() && weights[j]>weights[stack.peek()]){ arr[stack.peek()] = j-stack.peek(); stack.pop(); } stack.add(j); } return arr; } }
本题考察的知识点是单调栈的用法,所用编程语言是java。
我们新建一个数组,数组大小与平均体重数组大小相等。然后我们维持一个单调栈,一个非单调递增的栈,如果当前下标位置对应的数组元素大于栈顶元素时,我们开始弹出栈顶元素然后更新当前下标位置新数组的值