[LeetCode]#2037. Minimum Number of Moves to Seat Everyone
2 min readNov 17, 2021
Environment: Python 3.8
Key technique: sort
There are n
seats and n
students in a room. You are given an array seats
of length n
, where seats[i]
is the position of the ith
seat. You are also given the array students
of length n
, where students[j]
is the position of the jth
student.
You may perform the following move any number of times:
- Increase or decrease the position of the
ith
student by1
(i.e., moving theith
student from positionx
tox + 1
orx - 1
)
Return the minimum number of moves required to move each student to a seat such that no two students are in the same seat.
Note that there may be multiple seats or students in the same position at the beginning.
Example 1:
Input: seats = [3,1,5], students = [2,7,4]
Output: 4
Explanation: The students are moved as follows:
- The first student is moved from from position 2 to position 1 using 1 move.
- The second student is moved from from position 7 to position 5 using 2 moves.
- The third student is moved from from position 4 to position 3 using 1 move.
In total, 1 + 2 + 1 = 4 moves were used.
Analysis:
- Sort seats and students.
- Use for loop.
- Get difference abs(seats[i]-students[i]) and sum them.
Solution:
class Solution:
def minMovesToSeat(self, seats, students):
ans=0
seats.sort()
students.sort()
for i in range(len(seats)):
ans=ans+abs(seats[i]-students[i])
return ans
Submissions: