LeetCode 2037. 使每位学生都有座位的最少移动次数
admin
2024-05-03 18:20:45
0

【LetMeFly】2037.使每位学生都有座位的最少移动次数

力扣题目链接:https://leetcode.cn/problems/minimum-number-of-moves-to-seat-everyone/

一个房间里有 n 个座位和 n 名学生,房间用一个数轴表示。给你一个长度为 n 的数组 seats ,其中 seats[i] 是第 i 个座位的位置。同时给你一个长度为 n 的数组 students ,其中 students[j] 是第 j 位学生的位置。

你可以执行以下操作任意次:

  • 增加或者减少第 i 位学生的位置,每次变化量为 1 (也就是将第 i 位学生从位置 x 移动到 x + 1 或者 x - 1

请你返回使所有学生都有座位坐的 最少移动次数 ,并确保没有两位学生的座位相同。

请注意,初始时有可能有多个座位或者多位学生在 同一 位置。

 

示例 1:

输入:seats = [3,1,5], students = [2,7,4]
输出:4
解释:学生移动方式如下:
- 第一位学生从位置 2 移动到位置 1 ,移动 1 次。
- 第二位学生从位置 7 移动到位置 5 ,移动 2 次。
- 第三位学生从位置 4 移动到位置 3 ,移动 1 次。
总共 1 + 2 + 1 = 4 次移动。

示例 2:

输入:seats = [4,1,5,9], students = [1,3,2,6]
输出:7
解释:学生移动方式如下:
- 第一位学生不移动。
- 第二位学生从位置 3 移动到位置 4 ,移动 1 次。
- 第三位学生从位置 2 移动到位置 5 ,移动 3 次。
- 第四位学生从位置 6 移动到位置 9 ,移动 3 次。
总共 0 + 1 + 3 + 3 = 7 次移动。

示例 3:

输入:seats = [2,2,6,6], students = [1,3,2,6]
输出:4
解释:学生移动方式如下:
- 第一位学生从位置 1 移动到位置 2 ,移动 1 次。
- 第二位学生从位置 3 移动到位置 6 ,移动 3 次。
- 第三位学生不移动。
- 第四位学生不移动。
总共 1 + 3 + 0 + 0 = 4 次移动。

 

提示:

  • n == seats.length == students.length
  • 1 <= n <= 100
  • 1 <= seats[i], students[j] <= 100

方法一:排序

这道题意思是让座位和学生一一对应起来,并且在一一对应的前提下,让学生的总移动位置尽可能地少。

既然学生数量和座位数量相等,那么就不存在“坐哪些座位更优”的情况。

因此排序完成后,让第iii个学生坐到第iii个座位就好。

  • 时间复杂度O(nlog⁡n)O(n\log n)O(nlogn),其中n=len(students)n=len(students)n=len(students)
  • 空间复杂度O(log⁡n)O(\log n)O(logn)

AC代码

C++

class Solution {
public:int minMovesToSeat(vector& seats, vector& students) {sort(seats.begin(), seats.end());sort(students.begin(), students.end());int ans = 0;for (int i = 0; i < seats.size(); i++) {ans += abs(seats[i] - students[i]);}return ans;}
};

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/128509361

相关内容

热门资讯

《全境封锁》地下世界经验及快速... 第1页:展开《全境封锁》地下世界怎么升级快,或者说怎么练级效率高?相信很多玩家没有深究过此问题,今天...
《无人深空》战斗武器任务及游戏... 第1页:展开《无人深空》随着发售日的临近,越来越多的内容与细节也随之展现在玩家面前,大家最关心的话题...
《灵武战记》视频攻略 全流程解... 第1页:第一期展开《灵武战记》是一款日式角色扮演游戏,风格与《魔界战记》有些相似,同时兼具了超高的自...
《辐射避难所》宠物图鉴及属性效... 第1页:展开《辐射避难所》游戏中可入手的宠物种类非常多,不知道大家对其作用是否了解呢?今天小编带来“...
《10秒忍者X》关卡操作及游戏... 第1页:展开《10秒忍者X》是一款动作冒险游戏,玩家需要操控一个忍者在10秒内摧毁关卡内所有的机器人...
《伊苏8》解说视频 噩梦难度全... 第1页:序章展开《伊苏8》刚刚发售就吸引了大批玩家的喜爱,不知道各位玩家在通关的过程中有没有遇到困难...
《地球防卫军4.1》全兵种武器... 第1页:男兵类武器-突击步枪展开《地球防卫军4.1》中一共有4个兵种供大家选择,每个兵种都有100种...
2026年值得信赖的5大王者荣... 如今,越来越多玩家希望快速获得高等级、满英雄、高皮肤的《王者荣耀》账号,但游戏内长期积累或高额充值成...
2026年三国志战略版账号交易... 随着《三国志战略版》在2026年持续保持高活跃度与长线运营态势,玩家对账号交易的需求显著增长。面对市...
《辐射4》垃圾推荐及拾荒心得技... 第1页:展开《辐射4》游戏中捡垃圾是比较有趣的玩法,而其中不乏一些比较有价值的,今天小编带来“新生报...