আমাদের একটি প্রিসর্টেড অ্যারে আছে যাকে nums বলা হয়েছে এবং এর আকার n, আর একটি মান b রয়েছে। আমাদের নিচের কোয়ারী n বার সম্পাদন করতে হবে:
একটি অ-নেগেটিভ মান
kখুঁজে বের করুন যাতেk < 2^mএবংnums-এর সব উপাদানের সাথেk-এর XOR সর্বাধিক হয়। এইkহবেi-তম কোয়ারীর উত্তর।বর্তমান অ্যারে
nums-এর শেষ উপাদানটি সরিয়ে দিন।একটি
answerঅ্যারে তৈরি করতে হবে, যেখানেanswer[i]হবেi-তম কোয়ারীর উত্তর।
উদাহরণস্বরূপ, ইনপুট nums = [0,1,1,3], m = 2 হলে আউটপুট হবে [0,3,2,3], কারণ:
nums = [0,1,1,3],k = 0যেহেতু0 XOR 1 XOR 1 XOR 3 XOR 0 = 3।nums = [0,1,1],k = 3যেহেতু0 XOR 1 XOR 1 XOR 3 = 3।nums = [0,1],k = 2যেহেতু0 XOR 1 XOR 2 = 3।nums = [0],k = 3যেহেতু0 XOR 3 = 3।
সমাধানের ধাপসমূহ
x := 2^m - 1i= 0 থেকেnums-এর আকার - 1 পর্যন্ত লুপ চালান:nums[i] := nums[i] XOR xx := nums[i]
nums-কে উল্টে ফেরত দিন
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালোভাবে বুঝার জন্য:
def solve(nums, m):
x = 2**m - 1
for i in range(len(nums)):
nums[i] ^= x
x = nums[i]
return nums[::-1]
nums = [0,1,1,3]
m = 2
print(solve(nums, m)) ইনপুট
[0,1,1,3], 2
আউটপুট
[0, 3, 2, 3]