মনে করুন আমাদের একটি অ্যারে A আছে, আমাদের ডুপ্লিকেট ছাড়া সংখ্যাগুলো শাফল করতে হবে। ইনপুট যদি [1,2,3] হয়, তবে শাফলিং এর পর হতে পারে [1,3,2], রিসেট করার পর আবার শাফল করলে [2,3,1]।
এটি সমাধান করতে আমরা নিচের ধাপগুলো ফলো করব (ফিশার-ইয়েটস শাফল / random.shuffle):
বিভিন্ন মেথড থাকবে:
__init__(),reset(),shuffle()।__init__:original := দেওয়া অ্যারের কপিtemp := numsindices := 0 থেকে len(nums)-1 পর্যন্ত সংখ্যার লিস্ট
reset()অরিজিনাল অ্যারে রিটার্ন করবে।shuffle():যদি
len(temp) == 0, তবে খালি অ্যারে রিটার্ন করুন।i := random.choice(indices), j := random.choice(indices)temp[i], temp[j] = temp[j], temp[i](সোয়াপ)return temp
getAllPermutation(nums, i=0)মেথড (অতিরিক্ত):curr := iযদি
i == len(nums), তবেnums-এর কপিall-এ ইনসার্ট করুন, রিটার্ন।for j := curr to len(nums):swap nums[j], nums[curr]getAllPermutation(nums, curr+1)swap nums[j], nums[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]