- 对于相邻的两个位置假设高度汾别为 h1,h2,那么所需的操作数即为
- 对于这个结果我们首先反应是:操作数 = 小的高度 + 两者高度差。但是这样我们无法大规模计算
- 换种方式,我们可以认为是:无论右面 h1 的时候我们至少要保证 h1 达到目的状态。那么对于
- 那么现在我们就可以根据
- 实际上解法一也是一种差分的思想,只不过是动态的差分既然差分可以解决,那么我们當然可以直接计算差分数组然后根据数组计算。
- 每次操作可以将一个区间内的数减一
- 如图,通过计算出差分数组操作可以转为先选 取一个数减一再选取一个数加一。目标的差分数 组也就变成了第一个数为1其余为0的数组。
- 最快操作方式就是将差分数组第一个数减为1其余减为0。即操作数为差分数组的正数之和减一