Related
In following contests:
解决这个问题的关键在于如何选择交换哪两个数,我们可以观察到,为了最小化交换操作的次数,我们应该优先将大于k的数移出前k个数,同时将1到k的数移入前k个数。
由于本题只能交换相邻两个数字,因此,我们可以首先找出前k个数中大于k的数的位置,然后找出后n−k个数中1到k的数的位置,然后计算这两个位置的差值的绝对值,这个差值就是需要的最少交换次数。
具体实现我们可以使用两个数组去分别记录[1,k]的下标和[k+1,n]的下标,然后根据上述计算规则去计算
小L有一排 n 张卡片,上面分别写着 1 到 n 的整数,每个整数恰好出现一次。
他希望经过若干次操作后,让最前面的 k 张卡片上的数字恰好组成集合 {1,2,…,k}(顺序可以任意)。
每次操作只能交换相邻的两张卡片。
请计算最少需要进行多少次操作。
In following contests:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册