ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা আছে, এবং আমাদের সবচেয়ে দীর্ঘতম সংযোজিত সাবলিস্টের দৈর্ঘ্য খুঁজে বের করতে হবে যেখানে এর সমস্ত উপাদান অনন্য।
সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[6, 2, 4, 6, 3, 4, 5, 2], তাহলে আউটপুট হবে 5, কারণ অনন্য উপাদানগুলির দীর্ঘতম তালিকা হল [6, 3, 4, 5] , 2]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
head :=0, dct :=একটি নতুন মানচিত্র
-
max_dist :=0
-
প্রতিটি সূচক i এবং উপাদান সংখ্যার জন্য, করুন
-
যদি num হয় dct এবং dct[num]>=head, তাহলে
-
head :=dct[num] + 1
-
-
dct[সংখ্যা] :=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