ধরুন, nums নামক একটি অ্যারে এবং দুটি সংখ্যা x ও y দেওয়া হয়েছে যা একটি রেঞ্জ [x, y] তৈরি করে। আমাদের যাচাই করতে হবে যে অ্যারেতে এই রেঞ্জের সব সংখ্যা উপস্থিত আছে কিনা।
যেমন, ইনপুট nums = [5,8,9,6,3,2,4], x = 2, y = 6 হলে আউটপুট হবে True, কারণ অ্যারেতে ২, ৩, ৪, ৫, ৬ সবই আছে।
সমাধানের ধাপসমূহ
temp_range = y - x।- অ্যারেটি ট্রাভার্স করুন। যদি কোনো এলিমেন্টের Абсолют মান
xএবংy-র মধ্যে থাকে, তবে:z = abs(nums[i]) - x।- যদি
nums[z] > 0হয়, তবেnums[z] = -nums[z](নেগেটিভ করে দিন যাতে ডুপ্লিকেট কাউন্ট না হয়)।
- তারপর
i = 0থেকেtemp_rangeপর্যন্ত চেক করুন:- যদি
i >= len(nums)হয়, ব্রেক করুন। - যদি
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))
ইনপুট
[5,8,9,6,3,2,4], 2, 6
আউটপুট
True