题解
2024-10-13 17:49:51
发布于:湖南
6阅读
0回复
0点赞
说些人话其实就是:
初始化一个空栈和一个指针 指向排列结果的第一个元素。
遍历原始口味的每一个元素:
将当前元素压入栈中。
检查栈顶元素是否与排列结果的当前元素相同,如果相同则弹出栈顶元素,并将指针 向后移动一位。
如果最终栈为空且指针 已经遍历完排列结果的所有元素,则输出“Yes”,否则输出“No”。
code ,但是python:
def check_stack_order(n, original_flavors, arranged_flavors):
stack = []
j = 0
for flavor in original_flavors:
stack.append(flavor)
while stack and j < n and stack[-1] == arranged_flavors[j]:
stack.pop()
j += 1
if not stack and j == n:
return "Yes"
else:
return "No"
# 输入处理
n = int(input())
original_flavors = list(map(int, input().split()))
arranged_flavors = list(map(int, input().split()))
# 输出结果
print(check_stack_order(n, original_flavors, arranged_flavors))
stack 用于模拟栈的操作。
j 用于遍历排列结果。
对于每一个原始口味的元素,将其压入栈中,并检查栈顶元素是否与排列结果的当前元素相同。如果相同,则弹出栈顶元素,并将指针 向后移动一位。
最终检查栈是否为空且指针 j 是否已经遍历完排列结果的所有元素。
时间复杂度:,因为最多对每个元素进行一次入栈和一次出栈操作。
空间复杂度:,用于存储栈。
这里空空如也
有帮助,赞一个