برنامه نویسی

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;
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

لینک های تماس

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا