ধরুন আমাদের n অবজেক্ট সহ একটি অ্যারে আছে। এগুলি লাল, সাদা বা নীল রঙের, তাদের জায়গায় সাজান যাতে একই রঙের বস্তুগুলি সংলগ্ন হয়। তাই ক্রমানুসারে রং সঙ্গে লাল, সাদা এবং নীল. এখানে, আমরা যথাক্রমে লাল, সাদা এবং নীল রঙের প্রতিনিধিত্ব করতে 0, 1, এবং 2 এর মতো সংখ্যাগুলি ব্যবহার করব। সুতরাং যদি অ্যারেটি [2,0,2,1,1,0] এর মত হয়, তাহলে আউটপুট হবে [0,0,1,1,2,2]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- নিম্ন সেট করুন :=0, মধ্য :=0 এবং উচ্চ :=অ্যারের দৈর্ঘ্য – 1
- যখন মধ্য <=উচ্চ
- যদি arr[mid] =0 হয়, তাহলে arr[mid] এবং arr[low] অদলবদল করুন, এবং low এবং mid 1 দ্বারা বাড়ান
- অন্যথায় যখন arr[mid] =2, arr[high] এবং arr[mid] অদলবদল করুন, 1 দ্বারা উচ্চ হ্রাস করুন
- অন্যথায় মাঝামাঝি 1 দ্বারা বৃদ্ধি করুন
উদাহরণ(পাইথন)
আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −
class Solution(object): def sortColors(self, nums): low = 0 mid = 0 high = len(nums)-1 while mid<=high: if nums[mid] == 0: nums[low],nums[mid] = nums[mid],nums[low] low+=1 mid += 1 elif nums[mid] == 2: nums[high], nums[mid] = nums[mid], nums[high] high-=1 else: mid += 1 return nums ob1 = Solution() print(ob1.sortColors([2,0,2,1,1,0]))
ইনপুট
[2,0,2,1,1,0]
আউটপুট
[0,0,1,1,2,2]