একটি সংখ্যার তালিকা nums দেওয়া আছে যেখানে সব উপাদান ইউনিক। এমন সবচেয়ে লম্বা সাবলিস্ট খুঁজে বের করতে হবে যার সব উপাদান কনsekutিভ (যেমন ৩,৪,৫,৬,৭)। অর্ডার যেকোনো হতে পারে, শুধু মানগুলো কনsekutিভ হবে।
উদাহরণ: nums = [3, 6, 7, 5, 4, 9] হলে আউটপুট 5। কারণ সাবলিস্ট [3, 6, 7, 5, 4] মানের পরিসর ৩ থেকে ৭ (৫টি কনsekutিভ সংখ্যা) কভার করে।
সমাধানের পদ্ধতি
ব্রুট-ফোর্স O(n²) পদ্ধতি: প্রতিটি সাবলিস্টের জন্য ন্যূনতম (lhs) এবং সর্বোচ্চ (rhs) মান ট্র্যাক করুন। যদি rhs - lhs == j - i হয়, তবে সাবলিস্টের উপাদানগুলো কনsekutিভ।
পাইথন কোড
def solve(nums):
ret = 0
n = len(nums)
for i in range(n):
lhs = nums[i]
rhs = nums[i]
for j in range(i, n):
lhs = min(lhs, nums[j])
rhs = max(rhs, nums[j])
# কনsekutিভ শর্ত: max - min == length - 1
if rhs - lhs == j - i:
ret = max(ret, j - i + 1)
return ret
# টেস্ট
nums = [3, 6, 7, 5, 4, 9]
print(solve(nums)) # আউটপুট: 5
দ্রষ্টব্য
মূল আর্টিকেলের আউটপুটে 1 দেখায়, যা ভুল। সঠিক আউটপুট 5 হওয়া উচিত। উপরের কোডটি সঠিক ফলাফল দেবে।
সময় জটিলতা
O(n²) - নেস্টেড লুপ। অপ্টিমাইজড সমাধান HashSet ব্যবহার করে O(n) সম্ভব।