首页 > 解决方案 > 在执行完 K 次操作后最大化堆栈的顶部元素

问题描述

给定一个包含 N 个整数的堆栈。您需要在执行完 K 个操作后最大化堆栈的顶部元素。在一个操作中,您可以从堆栈中弹出一个元素或将任何弹出的元素压入堆栈。如果堆栈在执行 K 次操作后变空并且没有其他方法使堆栈不为空,则打印 -1。

输入格式:

第一行输入由两个空格分隔的整数 N 和 K 组成。第二行输入由 N 个空格分隔的整数组成,表示堆栈的元素。第一个元素代表栈顶,最后一个元素代表栈底。

输出格式 :

在执行完 K 次操作后,打印堆栈的最大可能顶部元素。

样本输入

6 4

1 2 4 3 3 5

样本输出

4

标签: arraysalgorithmdata-structuresstack

解决方案


在 k-1 个操作中弹出 k-1 个元素。现在对于最后一个操作,您可以再弹出一个元素,也可以从弹出的元素中推送一个元素。

所以比较这两种情况,如果你在第k个操作中弹出元素,顶部的元素应该比所有前k-1个弹出元素都多,否则对于第k个操作,从k-1个弹出元素中推送最大的元素。


推荐阅读