注意分类讨论以及特殊情况!
class Solution {
public:
int maximumTop(vector<int>& nums, int k) {
int len=nums.size();
int max_top=-1e6;
if(len==1&&k%2==1)//栈中只有一个元素,且k为奇数时返回-1
{
return -1;
}
if(k<len)//前k-1个元素的最大值(代表删k-1次,将里面最大的值添加回栈顶)与第k+1个元素(删k次)中取最大
{
if(k==0)
max_top=nums[0];
if(k==1)//此时要删第一个值,这种情况要单列,因为进不了下面的循环
{
max_top=nums[1];
}
for(int i=0;i<k-1;i++)
{
if(nums[i]>max_top)
{
max_top=nums[i];
}
if(max_top<nums[k])
max_top=nums[k];
}
}
else if(k==len)
{
for(int i=0;i<k-1;i++)//删k-1次,将里面最大的值添加回栈顶,因为如果删k次,栈会空
{
if(nums[i]>max_top)
{
max_top=nums[i];
}
}
}
else//k>len的情况
{
for(int i=0;i<len;i++)
{
if(nums[i]>max_top)
max_top=nums[i];
}
}
return max_top;
}
};