2037. حداقل تعداد حرکت برای نشستن همه
2037. حداقل تعداد حرکت برای نشستن همه
آسان
وجود دارد n
صندلی ها و n
دانش آموزان در یک اتاق یک آرایه به شما داده می شود seats
از طول n
، جایی که seats[i]
موقعیت از است ith
صندلی آرایه نیز به شما داده می شود students
از طول n
، جایی که students[j]
موقعیت از است jth
دانشجو.
می توانید حرکت زیر را هر چند بار انجام دهید:
- افزایش یا کاهش موقعیت
ith
دانش آموز توسط1
(یعنی حرکت دادنith
دانشجو از موقعیتx
بهx + 1
یاx - 1
)
برگشت را حداقل تعداد حرکت لازم است هر دانش آموز را به یک صندلی منتقل کنید به طوری که هیچ دو دانش آموز در یک صندلی نباشند.
توجه داشته باشید که ممکن است وجود داشته باشد چندگانه صندلی ها یا دانش آموزان در یکسان موقعیت در آغاز
مثال 1:
- ورودی: صندلی = [3,1,5]، دانش آموزان = [2,7,4]
- خروجی: 4
توضیح: دانش آموزان به شرح زیر منتقل می شوند:
- شاگرد اول با استفاده از 1 حرکت از موقعیت 2 به موقعیت 1 منتقل می شود.
- شاگرد دوم با استفاده از 2 حرکت از موقعیت 7 به موقعیت 5 منتقل می شود.
- دانش آموز سوم با استفاده از 1 حرکت از موقعیت 4 به موقعیت 3 منتقل می شود.
در مجموع از 1 + 2 + 1 = 4 حرکت استفاده شد.
مثال 2:
- ورودی: صندلی = [4,1,5,9]، دانش آموزان = [1,3,2,6]
- خروجی: 7
توضیح: دانش آموزان به شرح زیر منتقل می شوند:
- شاگرد اول تکان نمی خورد.
- دانش آموز دوم با استفاده از 1 حرکت از موقعیت 3 به موقعیت 4 منتقل می شود.
- شاگرد سوم با استفاده از 3 حرکت از موقعیت 2 به موقعیت 5 منتقل می شود.
- شاگرد چهارم با استفاده از 3 حرکت از موقعیت 6 به موقعیت 9 منتقل می شود.
در مجموع از 0 + 1 + 3 + 3 = 7 حرکت استفاده شد.
مثال 3:
- ورودی: صندلی = [2,2,6,6]، دانش آموزان = [1,3,2,6]
- خروجی: [0,1]
- توضیح: توجه داشته باشید که دو صندلی در موقعیت 2 و دو صندلی در موقعیت 6 وجود دارد.
دانش آموزان به شرح زیر منتقل می شوند:
- شاگرد اول با استفاده از 1 حرکت از موقعیت 1 به موقعیت 2 منتقل می شود.
- شاگرد دوم با استفاده از 3 حرکت از موقعیت 3 به موقعیت 6 منتقل می شود.
- شاگرد سوم حرکت نمی کند.
شاگرد چهارم تکان نمی خورد.
در مجموع از 1 + 3 + 0 + 0 = 4 حرکت استفاده شد.
محدودیت ها:
n == seats.length == students.length
1 <= n <= 100
1 <= seats[i], students[j] <= 100
راه حل:
class Solution {
/**
* @param Integer[] $seats
* @param Integer[] $students
* @return Integer
*/
function minMovesToSeat($seats, $students) {
$ans = 0;
sort($seats);
sort($students);
for ($i = 0; $i < count($seats); $i++) {
$ans += abs($seats[$i] - $students[$i]);
}
return $ans;
}
}
لینک های تماس