मान लीजिए हमारे पास एक ऐरे nums है। हमारे पास दो संख्याएं x और y भी हैं जो रेंज [x, y] को परिभाषित करती हैं। हमें यह जांचना है कि क्या ऐरे दिए गए रेंज के सभी तत्वों को समाहित करता है या नहीं।
उदाहरण के लिए, यदि इनपुट nums = [5,8,9,6,3,2,4], x = 2, y = 6 है, तो आउटपुट True होगा क्योंकि सभी तत्व [2,3,4,5,6] मौजूद हैं।
समाधान दृष्टिकोण
हम ऐरे का उपयोग ही विज़िट मार्कर के रूप में करते हैं। रेंज में आने वाले प्रत्येक तत्व के लिए, हम संबंधित इंडेक्स पर नकारात्मक मान रखकर मार्क करते हैं।
एल्गोरिदम चरण:
temp_range = y - x- प्रत्येक तत्व
nums[i]के लिए: - यदि
|nums[i]|रेंज[x, y]में है: z = |nums[i]| - xकी गणना करें- यदि
nums[z] > 0, तोnums[z] = -nums[z](मार्क करें) 0सेtemp_rangeतक जांचें:- यदि कोई
nums[i] > 0है, तो False लौटाएं (वह मान गायब है) - काउंट बढ़ाएं
- यदि काउंट
temp_range + 1के बराबर नहीं है, तो False लौटाएं - True लौटाएं
पायथन कार्यान्वयन
def solve(nums, x, y):
temp_range = y - x
for i in range(len(nums)):
if abs(nums[i]) >= x and abs(nums[i]) <= y:
z = abs(nums[i]) - x
if nums[z] > 0:
nums[z] = -nums[z]
cnt = 0
for i in range(temp_range + 1):
if i >= len(nums):
break
if nums[i] > 0:
return False
else:
cnt += 1
if cnt != temp_range + 1:
return False
return True
nums = [5, 8, 9, 6, 3, 2, 4]
x = 2
y = 6
print(solve(nums, x, y)) # True
इनपुट
[5,8,9,6,3,2,4], 2, 6
आउटपुट
True
नोट:
यह एल्गोरिदम ऐरे को मॉडिफाई करता है। यदि मूल ऐरे की आवश्यकता है, तो पहले कॉपी बना लें।