- Python编程300例:快速构建可执行高质量代码
- 李永华编著
- 268字
- 2021-03-26 23:33:10
例16 移动石子
1.问题描述
在x轴上分布着n个石子,用arr数组表示它们的位置。把这些石子移动到1,3,5,7,2n-1或者2,4,6,8,2n。也就是说,这些石子移动到从1开始连续的奇数位,或从2开始连续的偶数位上。返回最少的移动次数。每次只可以移动1个石子,只能把石子往左移动1个单位或往右移动1个单位。同一个位置不能同时有2个石子。
2.问题示例
[5,4,1],只需要把4移动1步到3,所以输出是1。arr=[1,6,7,8,9],最优的移动方案为把1移动到2,把6移动到4,把7移动到6,把9移动到10,所以输出是5。
3.代码实现
4.运行结果
数组:[1,6,7,8,9]
最小移动数:5