मान लीजिए हमारे पास n ऑब्जेक्ट्स के साथ एक सरणी है। ये लाल, सफेद, या नीले रंग के हैं, उन्हें जगह पर सॉर्ट करें ताकि एक ही रंग के ऑब्जेक्ट्स आसन्न हों। इसलिए रंगों के क्रम में लाल, सफेद और नीला। यहां, हम संख्याओं 0, 1, और 2 का उपयोग क्रमशः लाल, सफेद, और नीले रंग को दर्शाने के लिए करेंगे। इसलिए यदि सरणी [2,0,2,1,1,0] की तरह है, तो आउटपुट [0,0,1,1,2,2] होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −
- low := 0, mid := 0 और high := सरणी की लंबाई - 1 सेट करें
- जब तक mid <= high
- यदि arr[mid] = 0, तो arr[mid] और arr[low] को स्वैप करें, और low और mid को 1 से बढ़ाएं
- अन्यथा जब arr[mid] = 2, arr[high] और arr[mid] को स्वैप करें, high को 1 से घटाएं
- अन्यथा mid को 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]