ধরা যাক nums নামক একটি সংখ্যার তালিকা আছে, এবং আমাদের সবচেয়ে দীর্ঘ সन्नিবিষ্ট সাবলিস্টের দৈর্ঘ্য খুঁজে বের করতে হবে যেখানে সব উপাদান অনন্য (unique)।
উদাহরণ: nums = [6, 2, 4, 6, 3, 4, 5, 2] হলে আউটপুট 5, কারণ সবচেয়ে দীর্ঘ অনন্য উপাদান সাবলিস্ট হল [6, 3, 4, 5, 2]।
সমাধানের ধাপসমূহ
- head := 0, dct := খালি ম্যাপ
- max_dist := 0
- প্রতিটি ইন্ডেক্স i এবং উপাদান num-এর জন্য nums-এ:
- যদি num dct-এ থাকে এবং dct[num] >= head হয়, তবে head := dct[num] + 1
- dct[num] := i
- যদি i - head + 1 > max_dist হয়, তবে max_dist := i - head + 1
- max_dist ফেরত দিন।
উদাহরণ কোড
class Solution:
def solve(self, nums):
head = 0
dct = {}
max_dist = 0
for i, num in enumerate(nums):
if num in dct and dct[num] >= head:
head = dct[num] + 1
dct[num] = i
if i - head + 1 > max_dist:
max_dist = i - head + 1
return max_dist
ob = Solution()
nums = [6, 2, 4, 6, 3, 4, 5, 2]
print(ob.solve(nums))
ইনপুট
[6, 2, 4, 6, 3, 4, 5, 2]
আউটপুট
5