برنامه نویسی

2134 حداقل تعویض به گروه همه 1 با هم II

Summarize this content to 400 words in Persian Lang
2134. حداقل مبادله به گروه 1 با هم II

متوسط

آ مبادله به عنوان گرفتن دو تعریف می شود متمایز موقعیت ها در یک آرایه و مبادله مقادیر موجود در آنها.

آ گرد آرایه به عنوان آرایه ای تعریف می شود که در آن ما را در نظر می گیریم اولین عنصر و آخر عنصر بودن مجاور.

با توجه به الف دایره دودویی آرایه nums، برگشت حداقل تعداد مبادله مورد نیاز برای گروه بندی همه 1موجود در آرایه با هم در هر مکان.

مثال 1:

ورودی: اعداد= [0,1,0,1,1,0,0]

خروجی: 1

توضیح: در اینجا چند روش برای گروه بندی همه 1ها با هم وجود دارد:

[0,0,1,1,1,0,0] با استفاده از 1 تعویض
[0,1,1,1,0,0,0] با استفاده از 1 تعویض
[1,1,0,0,0,0,1] با استفاده از 2 مبادله (با استفاده از خاصیت دایره ای آرایه).
هیچ راهی برای گروه بندی همه 1 ها با 0 مبادله وجود ندارد.
بنابراین، حداقل تعداد سوآپ مورد نیاز 1 است.

مثال 2:

ورودی: اعداد= [0,1,1,1,0,0,1,1,0]

خروجی: 2

توضیح: در اینجا چند روش برای گروه بندی همه 1ها با هم وجود دارد:

[1,1,1,0,0,0,0,1,1] با استفاده از 2 مبادله (با استفاده از خاصیت دایره ای آرایه).
[1,1,1,1,1,0,0,0,0] با استفاده از 2 تعویض
هیچ راهی برای گروه بندی همه 1ها با 0 یا 1 مبادله وجود ندارد.
بنابراین، حداقل تعداد سوآپ مورد نیاز 2 است.

مثال 3:

ورودی: اعداد= [1,1,0,0,1]

خروجی: 0

توضیح: همه 1ها به دلیل خاصیت دایره ای آرایه قبلاً با هم گروه بندی شده اند.

بنابراین، حداقل تعداد سوآپ مورد نیاز 0 است.

محدودیت ها:

1 5

nums[i] یا است 0 یا 1.

اشاره:

توجه داشته باشید که تعداد 1هایی که باید با هم گروه بندی شوند ثابت است. این عدد 1 است که کل آرایه دارد.
در کل با این شماره تماس بگیرید. سپس باید برای هر زیرآرایه با اندازه کل (احتمالاً پیچیده شده) بررسی کنیم، چه تعداد مبادله لازم است تا زیرآرایه همه 1 باشد.
تعداد مبادله های مورد نیاز تعداد 0 ها در زیرآرایه است.
برای حذف خاصیت دایره ای آرایه، می توانیم آرایه اصلی را به خودش اضافه کنیم. سپس، هر زیرآرایه از طول کل را بررسی می کنیم.
چگونه از بازشماری تعداد 0های زیر مجموعه در هر بار اجتناب کنیم؟ تکنیک پنجره کشویی می تواند کمک کننده باشد.

راه حل:

برای حل این مشکل می توانیم مراحل زیر را دنبال کنیم:

تعداد کل را بشمارید 1س: این تعداد خواهد بود 1ما باید با هم گروه شویم

آرایه را گسترش دهید: برای رسیدگی به طبیعت دایره ای، آرایه را به خودش اضافه کنید.

از تکنیک پنجره کشویی استفاده کنید: تکنیک پنجره کشویی را روی آرایه توسعه یافته اعمال کنید تا حداقل تعداد تعویض مورد نیاز را بیابید.

بیایید این راه حل را در PHP پیاده سازی کنیم: 2134. حداقل مبادله به گروه 1 با هم II

// Example usage
$nums1 = [0,1,0,1,1,0,0];
$nums2 = [0,1,1,1,0,0,1,1,0];
$nums3 = [1,1,0,0,1];

echo minSwaps($nums1) . “\n”; // Output: 1
echo minSwaps($nums2) . “\n”; // Output: 2
echo minSwaps($nums3) . “\n”; // Output: 0

?>

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

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

توضیح:

تعداد کل را بشمارید 1س: تعداد کل را محاسبه کنید 1s در آرایه اصلی.

آرایه را گسترش دهید: آرایه اصلی را به خودش الحاق کنید تا طبیعت دایره ای را مدیریت کند.

پنجره اولیه: تعداد را بشمارید 0s در پنجره اولیه اندازه برابر با تعداد کل 1س

پنجره کشویی: پنجره را روی آرایه توسعه یافته بلغزانید. برای هر موقعیت جدید، تعداد آنها را به روز کنید 0s بر اساس عناصر ورودی و خروجی از پنجره.

حداقل را پیدا کنید: حداقل تعداد را پیگیری کنید 0s مواجه شده، که با حداقل تعداد مبادله مورد نیاز مطابقت دارد.

این راه حل به طور موثری آرایه دایره ای را با تبدیل آن به یک مسئله خطی کنترل می کند و از تکنیک پنجره کشویی برای حفظ تعداد در حال اجرا استفاده می کند. 0s در هر پنجره با اندازه برابر با تعداد کل است 1س

لینک های تماس

اگر این مجموعه را مفید یافتید، لطفاً آن را در نظر بگیرید مخزن یک ستاره در GitHub یا اشتراک گذاری پست در شبکه های اجتماعی مورد علاقه خود 😍. حمایت شما برای من اهمیت زیادی دارد!

اگر محتوای مفیدتری مانند این می‌خواهید، در صورت تمایل من را دنبال کنید:

2134. حداقل مبادله به گروه 1 با هم II

متوسط

آ مبادله به عنوان گرفتن دو تعریف می شود متمایز موقعیت ها در یک آرایه و مبادله مقادیر موجود در آنها.

آ گرد آرایه به عنوان آرایه ای تعریف می شود که در آن ما را در نظر می گیریم اولین عنصر و آخر عنصر بودن مجاور.

با توجه به الف دایره دودویی آرایه nums، برگشت حداقل تعداد مبادله مورد نیاز برای گروه بندی همه 1موجود در آرایه با هم در هر مکان.

مثال 1:

  • ورودی: اعداد= [0,1,0,1,1,0,0]
  • خروجی: 1
  • توضیح: در اینجا چند روش برای گروه بندی همه 1ها با هم وجود دارد:

    • [0,0,1,1,1,0,0] با استفاده از 1 تعویض
    • [0,1,1,1,0,0,0] با استفاده از 1 تعویض
    • [1,1,0,0,0,0,1] با استفاده از 2 مبادله (با استفاده از خاصیت دایره ای آرایه).
    • هیچ راهی برای گروه بندی همه 1 ها با 0 مبادله وجود ندارد.
    • بنابراین، حداقل تعداد سوآپ مورد نیاز 1 است.

مثال 2:

  • ورودی: اعداد= [0,1,1,1,0,0,1,1,0]
  • خروجی: 2
  • توضیح: در اینجا چند روش برای گروه بندی همه 1ها با هم وجود دارد:

    • [1,1,1,0,0,0,0,1,1] با استفاده از 2 مبادله (با استفاده از خاصیت دایره ای آرایه).
    • [1,1,1,1,1,0,0,0,0] با استفاده از 2 تعویض
    • هیچ راهی برای گروه بندی همه 1ها با 0 یا 1 مبادله وجود ندارد.
    • بنابراین، حداقل تعداد سوآپ مورد نیاز 2 است.

مثال 3:

  • ورودی: اعداد= [1,1,0,0,1]
  • خروجی: 0
  • توضیح: همه 1ها به دلیل خاصیت دایره ای آرایه قبلاً با هم گروه بندی شده اند.

    • بنابراین، حداقل تعداد سوآپ مورد نیاز 0 است.

محدودیت ها:

  • 1 5
  • nums[i] یا است 0 یا 1.

اشاره:

  1. توجه داشته باشید که تعداد 1هایی که باید با هم گروه بندی شوند ثابت است. این عدد 1 است که کل آرایه دارد.
  2. در کل با این شماره تماس بگیرید. سپس باید برای هر زیرآرایه با اندازه کل (احتمالاً پیچیده شده) بررسی کنیم، چه تعداد مبادله لازم است تا زیرآرایه همه 1 باشد.
  3. تعداد مبادله های مورد نیاز تعداد 0 ها در زیرآرایه است.
  4. برای حذف خاصیت دایره ای آرایه، می توانیم آرایه اصلی را به خودش اضافه کنیم. سپس، هر زیرآرایه از طول کل را بررسی می کنیم.
  5. چگونه از بازشماری تعداد 0های زیر مجموعه در هر بار اجتناب کنیم؟ تکنیک پنجره کشویی می تواند کمک کننده باشد.

راه حل:

برای حل این مشکل می توانیم مراحل زیر را دنبال کنیم:

  1. تعداد کل را بشمارید 1س: این تعداد خواهد بود 1ما باید با هم گروه شویم
  2. آرایه را گسترش دهید: برای رسیدگی به طبیعت دایره ای، آرایه را به خودش اضافه کنید.
  3. از تکنیک پنجره کشویی استفاده کنید: تکنیک پنجره کشویی را روی آرایه توسعه یافته اعمال کنید تا حداقل تعداد تعویض مورد نیاز را بیابید.

بیایید این راه حل را در PHP پیاده سازی کنیم: 2134. حداقل مبادله به گروه 1 با هم II


// Example usage
$nums1 = [0,1,0,1,1,0,0];
$nums2 = [0,1,1,1,0,0,1,1,0];
$nums3 = [1,1,0,0,1];

echo minSwaps($nums1) . "\n"; // Output: 1
echo minSwaps($nums2) . "\n"; // Output: 2
echo minSwaps($nums3) . "\n"; // Output: 0

?>
وارد حالت تمام صفحه شوید

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

توضیح:

  1. تعداد کل را بشمارید 1س: تعداد کل را محاسبه کنید 1s در آرایه اصلی.
  2. آرایه را گسترش دهید: آرایه اصلی را به خودش الحاق کنید تا طبیعت دایره ای را مدیریت کند.
  3. پنجره اولیه: تعداد را بشمارید 0s در پنجره اولیه اندازه برابر با تعداد کل 1س
  4. پنجره کشویی: پنجره را روی آرایه توسعه یافته بلغزانید. برای هر موقعیت جدید، تعداد آنها را به روز کنید 0s بر اساس عناصر ورودی و خروجی از پنجره.
  5. حداقل را پیدا کنید: حداقل تعداد را پیگیری کنید 0s مواجه شده، که با حداقل تعداد مبادله مورد نیاز مطابقت دارد.

این راه حل به طور موثری آرایه دایره ای را با تبدیل آن به یک مسئله خطی کنترل می کند و از تکنیک پنجره کشویی برای حفظ تعداد در حال اجرا استفاده می کند. 0s در هر پنجره با اندازه برابر با تعداد کل است 1س

لینک های تماس

اگر این مجموعه را مفید یافتید، لطفاً آن را در نظر بگیرید مخزن یک ستاره در GitHub یا اشتراک گذاری پست در شبکه های اجتماعی مورد علاقه خود 😍. حمایت شما برای من اهمیت زیادی دارد!

اگر محتوای مفیدتری مانند این می‌خواهید، در صورت تمایل من را دنبال کنید:

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

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

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

دکمه بازگشت به بالا