一道连续顺序的算法题

An algorithm question on consecutive order

所以我参加了一个编程竞赛,我被困在一个问题中,这几天我试图解决它。因为我很想知道答案,但是我做不到。任何解释或答案将不胜感激。这是问题:

礼堂正在举行一场音乐会。大厅是一条无限长的一维数轴,N 个学生中的每一个都站在数轴上的某个点。由于它们都分散在数轴上的不同位置,因此管理它们变得越来越困难。所以组织者凯尔想在大厅里移动他们,让他们都在连续的位置,例如,他们在位置 2,3,4,5 而不是像 1,3,5 那样分散, 6.简单来说,他们之间没有差距。一次,凯尔可以选择任何一侧最外侧位置的人。例如,在 1,3,5,6 中,最靠外的位置是 1 和 6。他可以选择其中一个并将它们移动到任何未占用的位置,这样它们就不再处于最靠外的位置。这使得它们在每次移动时越来越近,直到它们都处于连续的位置。找出可以完成此任务的最大和最小移动次数。

我对你有一些想法,但我不确定我是否做对了..

所以:

如果1号目前比他最外面那么跳到最高号 数字 2 现在是外层,它无限延伸,另一端也是如此,另一侧的外层正在移动到下一个,成为最后一个,依此类推。有意义吗?

最大值是间隙数,因为最低效的移动会将最外对之间的间隙数减少一个。

对于最小值,给定 k 个人,在线性时间内(使用滑动 window)找到人数最多的 k 个连续位置,并将此称为计数 c。然后最小值是 k-c,其中每一步都会把这个 window 外面的人放到里面。