在桌子上有 n 个硬币排成一排,从左到右依次是第一个,第二个,第三个...... 硬币有正反两面,正面朝上用 0 表示,反面朝上用 1 表示。初始的时候桌子上的硬币正面反面都有,这样看起来就有点杂乱了。 牛牛决定整理一下这些硬币,让它们都正面朝上,会有一种规则的美感。 整理的规则是:假如现在有 k 个反面朝上的硬币,那么就将位置 k 处的硬币反转过来。 牛牛一直重复上面这个步骤,例如对于 3 个硬币的情况: 101 。 开始共有 2 个反面朝上的,所以反转第 2 个硬币,现在变成了 111 现在共有 3 个反面朝上的,所以反转第 3 个硬币,现在变成了 110 现在共有 2 个反面朝上的,所以反转第 2 个硬币,现在变成了 100 现在共有 1 个反面朝上的,所以反转第 1 个硬币,现在变成了 000 经过这四次操作之后,硬币终于如愿的全部正面朝上了。 现在给出硬币的序列,请你告诉牛牛共需要几次操作才能将所有的硬币都变得正面朝上,如果按这种方式永远也不可能变成全部正面朝上的话也要告诉牛牛哦。
第一行输入一个正整数 n ,代表硬币的个数 接下来一行一个长度为 n 的 01 串,代表硬币的序列 1 ≤ n ≤ 10^5
如果可以在有限次内将硬币全部反转成正面朝上,输出这个次数 否则在一行中输出 -1
3 101
4
考点:贪心 · 模拟 · 基础数学
数据规模 n ≤ 1e5 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:贪心
每一步都取当前最优,靠问题性质保证局部最优能拼成全局最优。
思路框架(贪心 通法 · 非本题专属)
实现要点:贪心题关键在于排序规则:按什么关键字排序决定了策略是否正确。
复杂度:时间 O(n log n)(含排序) | 空间 O(1) ~ O(n)
该范式的通法易错点
对照本题
样例 1
3 / 1014解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2024年春招-京东-技术通用岗位-第二批笔试。