কম্পিউটার টিউটোরিয়াল

পাইথনে সাবসিকোয়েন্স যেখানে ভ্যালু ডিফারেন্স = ইনডেক্স ডিফারেন্স, সেটির ম্যাক্সিমাম সম

দেওয়া লিস্ট nums। একটি স্ট্রিক্টলি ইনক্রিজিং সাবসিকোয়েন্স খুঁজতে হবে যাতে প্রতিটি কনসেকিউটিভ জোড়ার জন্য ভ্যালুর ডিফারেন্স তাদের ইনডেক্স ডিফারেন্সের সমান হয়। সাবসিকোয়েন্সের ম্যাক্সিমাম সম বের করতে হবে।

উদাহরণ: nums=[6,7,9,9,8,5] → সাবসিকোয়েন্স [6,7,9] ইনডেক্স [0,1,3] → ভ্যালু ডিফ: ১,২; ইনডেক্স ডিফ: ১,২ → ম্যাচ → সম = ২২।

গাণিতিক ইনসাইট + হ্যাশম্যাপ

শর্ত: nums[j] - nums[i] = j - i → nums[j] - j = nums[i] - i।

অর্থাৎ, nums[i] - i ভ্যালু একই থাকলে সেগুলো একটি বৈধ সাবসিকোয়েন্স বানাতে পারে। প্রতিটি key = nums[i] - i গ্রুপের মানের যোগফল বের করুন, সর্বোচ্চটি আউটপুট।

পাইথন কোড

from collections import defaultdict

class Solution:
    def solve(self, nums):
        d = defaultdict(int)
        for i, x in enumerate(nums):
            d[x - i] += x
        return max(d.values())

ob1 = Solution()
print(ob1.solve([6, 7, 9, 9, 8, 5]))  # 22

টাইম কমপ্লেক্সিটি: O(n), স্পেস: O(n)। খুবই এলিগ্যান্ট O(n) সমাধান।

  1. পাইথনে প্রথম ও শেষ মান সমান সাবলিস্টের সংখ্যা খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে সব সन्नিহিত সাবলিস্টের যোগফলের যোগফল বের করার প্রোগ্রাম

  3. পাইথন প্রোগ্রামে অ্যারের যোগফল বের করা

  4. পাইথনে অ্যারের যোগফল বের করা