मान लीजिए हमारे पास एक ऐरे A है, हमें डुप्लिकेट के बिना नंबरों के एक सेट को शफल करना है। इसलिए यदि इनपुट [1,2,3] जैसा है, तो शफलिंग के लिए, यह [1,3,2] होगा, रीसेट करने के बाद, यदि हम फिर से शफल करते हैं, तो यह [2,3,1] होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
अलग-अलग मेथड्स होंगे। ये init(), reset(), shuffle() हैं। ये नीचे की तरह कार्य करेंगे -
init इस तरह होगा -
original := दिए गए ऐरे की एक कॉपी
temp := nums
indices := 0 से nums की लंबाई - 1 तक नंबरों की एक लिस्ट
reset() मूल ऐरे लौटाएगा
shuffle() इस तरह होगा -
यदि temp की लंबाई 0 है, तो खाली ऐरे लौटाएं
i := indices ऐरे से रैंडमली एक इंडेक्स चुनें, j := indices ऐरे से रैंडमली दूसरा इंडेक्स चुनें
इंडेक्स i और j पर मौजूद एलिमेंट्स को स्वैप करें
temp लौटाएं
getAllPermutation() नामक एक और मेथड nums, i लेगा, प्रारंभ में i = 0, यह इस तरह होगा -
curr := i
यदि i = nums की लंबाई, तो
nums ऐरे की एक कॉपी all नामक दूसरे ऐरे में इन्सर्ट करें
लौटें
j := curr से nums की लंबाई तक
nums से इंडेक्स j और curr पर एलिमेंट्स स्वैप करें
getAllPermutation(nums, curr + 1) कॉल करें
nums से इंडेक्स j और curr पर एलिमेंट्स स्वैप करें
उदाहरण
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())इनपुट
[1,2,3] से इनिशियलाइज़ करें, फिर shuffle(), reset() और shuffle() कॉल करें
आउटपुट
[2, 1, 3] [1, 2, 3] [2, 3, 1]