मान लीजिए हमारे पास एक प्रीसॉर्टेड ऐरे nums है जिसका आकार n है और एक मान b है। हम निम्नलिखित क्वेरी को n बार करना चाहते हैं:
- एक गैर-ऋणात्मक मान
k < 2^mखोजें जिससेnumsके सभी तत्वों औरkका XOR अधिकतम हो। यहki-वीं क्वेरी का उत्तर है। - वर्तमान ऐरे
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 - 1सेट करें।iको 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]