最大字典序

栈和排序

https://ac.nowcoder.com/acm/problem/14893

发一个java版本的

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] array = new int[n];
        for(int i = 0; i < n; i++){
            array[i] = sc.nextInt();
        }

        int[] maxArray = new int[n];
        maxArray[n - 1] = array[n - 1];
        for(int i = n - 2; i >= 0; i--){
            maxArray[i] = Math.max(array[i], maxArray[i + 1]);
        }

        Stack<Integer> stack = new Stack<>();
        StringBuilder sb = new StringBuilder();

        for(int i = 0; i < n; i++){
            while(!stack.isEmpty() && stack.peek() > maxArray[i]){
                //System.out.print(stack.pop() + " ");
                sb.append(stack.pop() + " ");
            }
            stack.push(array[i]);
        }

        while(!stack.isEmpty()){
            //System.out.print(stack.pop() + " ");
            sb.append(stack.pop() + " ");
        }

        System.out.print(sb.toString());

    }
}
全部评论

相关推荐

代码飞升:别用口语,后端就写后端,前端就写前端,最后别光后悔
点赞 评论 收藏
分享
迟缓的斜杠青年巴比Q...:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务