2021年CSP-j第四题(小熊的果篮)

先来看题目

解题思路

  1. 读取输入:首先读取水果的总数 n 和每个水果的种类(苹果为1,桔子为0)。

  2. 初始化:我们不需要显式地存储每个块的边界,但可以通过遍历数组来动态地确定当前块的开始和结束位置。

  3. 处理

    • 遍历整个水果数组,每次迭代中,我们寻找所有当前最左边的水果块(即每个连续相同水果序列的开始)。
    • 对于每个找到的最左边水果块,我们记录它的起始位置,并找到这个块的结束位置(即这个序列中最后一个相同水果的索引)。
    • 输出这个块中所有水果的编号,即从这个块的起始位置到结束位置的所有整数。
    • 然后,我们可以将这部分水果“移除”(在逻辑上,通过更新起始位置来模拟),并继续处理剩下的水果。
  4. 输出:对于每次迭代中找出的水果块,输出其包含的水果编号

下面,我们思考如何实现

 先想到使用双向链表,因为链表可以在中间插入或者删除元素,时间复杂度为O(1),遍历一次复杂度为O(n)。我们其实并不用真正为每一个水果创建一个节点,我们可以为每一个“块”创建一个节点,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值