下一个较大元素

题目描述:


下一个较大元素_牛客网
现在我们有一个int数组,请你找出数组中每个元素的下一个比它大的元素。
给定一个int数组A及数组的大小n,请返回一个int数组,代表每个元素比他大的下一个元素,若不存在则为-1。保证数组中元素均为正整数。


输入示例:

[11,13,10,5,12,21,3],7

输出示例:

[13,21,12,12,21,-1,-1]

题目分析:


这道题呢,用单调栈来做,从左到右变遍历维护一个单调递减的栈。当栈顶元素小于当前元素时,说明栈顶元素的下一个比它大的数就是当前元素,然后将栈顶元素出栈然后将当前元素赋给它就好啦,最后将当前元素压栈。具体代码如下~


代码实现:

import java.util.*;

public class NextElement {
    public int[] findNext(int[] A, int n) {
        // write code here
        Stack<Integer> stack=new Stack<>();
        int[] ret=new int[n];
        Arrays.fill(ret,-1);
        for(int i=0;i<n;i++){
            while(!stack.isEmpty()&&A[stack.peek()]<A[i]){
                ret[stack.pop()]=A[i];
            }
            stack.push(i);
        }
        return ret;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容