问题
给你一堆N整数。在一次操作中,您可以从堆栈中弹出一个元素,也可以将任何弹出的元素推入堆栈。在执行精确操作后,您需要最大化堆栈顶部的元素K。如果执行操作后堆栈变空K,并且没有其他方法使堆栈不为空,则打印 -1。
输入格式:
输入的第一行由两个空格分隔的整数N和组成K。输入的第二行由N空格分隔的整数组成,表示堆栈的元素。第一个元素代表栈顶,最后一个元素代表栈底。
输出格式:
执行精确操作后打印堆栈的最大可能顶部元素K。
输入:
6 4
1 2 4 3 3 5
预期输出:
4
预期输出的说明:
在 3 个操作中,我们删除1, 2, 4,在第四个操作中,我们推4回堆栈。因此,4就是答案。
我的代码:
def stack_operations(list1, k):
stack = []
list1.reverse()
for number in list1:
stack.append(number)
if k == len(list1) or len(list1) == 1:
print("-1")
elif k > len(list1):
print(max(list1))
else:
list2 = []
for i in range(k - 1):
list2.append(stack.pop())
max_element = max(list2)
print(max_element)
n, k = map(int, input().split())
num = list(map(int, input().split()))
stack_operations(num, k)
我的疑问:
我的代码适用于示例输入/输出,但它显示所有其他测试用例的运行时错误。我在这里做错了什么?是逻辑错误还是代码错误?问题出在哪里?
翻翻过去那场雪
RISEBY
相关分类