मान लीजिए हमारे पास 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]