मान लीजिए कि हमारे पास एक सरणी ए है, हमें डुप्लिकेट के बिना संख्याओं के एक सेट को फेरबदल करना होगा। इसलिए यदि इनपुट [1,2,3] जैसा है, तो फेरबदल के लिए, यह [1,3,2] होगा, रीसेट करने के बाद, यदि हम फिर से फेरबदल करते हैं, तो यह [2,3,1]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
अलग-अलग तरीके होंगे। ये हैं init (), रीसेट (), फेरबदल ()। ये नीचे की तरह काम करेंगे -
-
init जैसा होगा -
-
मूल :=दिए गए सरणी की एक प्रति
-
अस्थायी:=अंक
-
सूचकांक :=0 से लेकर अंकों की लंबाई तक की संख्याओं की सूची - 1
-
रीसेट () मूल सरणी लौटाएगा
-
फेरबदल () इस तरह होगा -
-
यदि अस्थायी की लंबाई 0 है, तो खाली सरणी लौटाएं
-
i :=इंडेक्स ऐरे से बेतरतीब ढंग से एक इंडेक्स का चुनाव करें, j :=इंडेक्स ऐरे से दूसरे इंडेक्स को रैंडमली चुनें
-
इंडेक्स i और j में मौजूद तत्वों को स्वैप करें
-
वापसी अस्थायी
-
एक अन्य विधि जिसे getAllPermutation() कहा जाता है, अंक लेगा, i, प्रारंभ में i =0, जैसा होगा -
-
वर्तमान:=मैं
-
अगर मैं =अंकों की लंबाई, तो
-
nums array की एक कॉपी को एक अन्य एरे में डालें जिसे all कहा जाता है
-
वापसी
-
-
j के लिए :=curr to length of nums
-
इंडेक्स j पर तत्वों की अदला-बदली करें और अंकों से कर्व करें
-
कॉल getAllPermutation(nums, curr + 1)
-
इंडेक्स j पर तत्वों की अदला-बदली करें और अंकों से कर्व करें
-
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
import random class Solution(object): def __init__(self, nums): self.original = [x for x in nums] self.temp = nums self.indices = [x for x in range(len(nums))] def reset(self): return self.original def shuffle(self): if not len(self.temp): return [] i = random.choice(self.indices) j = random.choice(self.indices) self.temp[i], self.temp[j] = self.temp[j], self.temp[i] return self.temp ob = Solution([1,2,3]) print(ob.shuffle()) print(ob.reset()) print(ob.shuffle())
इनपुट
Initialize with [1,2,3] , then call shuffle(), reset() and shuffle()को कॉल करें
आउटपुट
[2, 1, 3] [1, 2, 3] [2, 3, 1]