编程之美3.7,队列中的最大值操作问题

本文详细解释了如何通过两个栈来构建队列,特别关注了在push()和pop()操作中如何动态修改最大元素的原理。通过理解栈的先进后出特性,文章阐述了在入栈过程中只需与已存在的最大元素进行比较,从而有效更新最大元素的位置,而不必记录后续元素。此方法展示了数据结构间的巧妙应用,为读者提供了深入理解栈和队列关系的洞察。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解法三中,采用两个栈的方式建立一个队列,其中stack支持的方法有:

1,pop()

2,push()

3,max()

其中在push()和pop()过程中需要动态修改最大值,其中采用link2NextMaxItem[]数组保存当前元素的上一级最大元素,这里需要理解其中的原理,为什么这样可以?

其中必须理解stack的特性,先进后出的性质,这样书上的操作是正确的,每次进来的数值,只和已经进栈的最大值比较,并且记录旧的最大值位置,而不用记录后面入栈的数值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值