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

পাইথনে নির্দিষ্ট দৈর্ঘ্যের সাবঅ্যারে থেকে সবচেয়ে বড় সাবঅ্যারে খুঁজে বের করা

একটি অ্যারে এবং দৈর্ঘ্য k দেওয়া থাকলে, দৈর্ঘ্য k এর সবচেয়ে বড় সাবঅ্যারে খুঁজে বের করতে হবে। সাবঅ্যারে তুলনার নিয়ম: প্রথম ভিন্ন ইনডেক্সে যে সাবঅ্যারের মান বড়, সেটিই বড়।

উদাহরণ:

ইনপুট: nums = [5, 3, 7, 9], k = 2

আউটপুট: [7, 9] কারণ দৈর্ঘ্য ২ এর সাবঅ্যারেগুলো: [5,3], [3,7], [7,9]। এখানে [7,9] সবচেয়ে বড়।

সমাধানের পদ্ধতি:

  1. start = len(nums) - k (সাবঅ্যারের শেষ সম্ভাব্য শুরুতে ইনডেক্স)
  2. max_element = nums[start], max_index = start
  3. while start >= 0 লুপ চালান:
    • যদি nums[start] > max_element: আপডেট করুন
    • start -= 1
  4. রিটার্ন nums[max_index : max_index + k]

পাইথন কোড:

def solve(nums, k):
    start = len(nums) - k
    max_element = nums[start]
    max_index = start
    while start >= 0:
        if nums[start] > max_element:
            max_element = nums[start]
            max_index = start
        start -= 1
    return nums[max_index : max_index + k]

print(solve([5, 3, 7, 9], 2))  # আউটপুট: [7, 9]

টেস্ট কেস:

ইনপুট: [5, 3, 7, 9], 2

আউটপুট: [7, 9]

নোট:

এই অ্যালগরিদম O(n) টাইম কমপ্লেক্সিটিতে কাজ করে। এটি সাবঅ্যারের প্রথম উপাদানের ভিত্তিতে তুলনা করে, যা লেক্সিকোগ্রাফিক্যাল অর্ডার নিশ্চিত করে।

  1. পাইথনে গ্রাফ সবাই দ্বারা ট্রাভার্সেবল কিনা চেক করার প্রোগ্রাম

  2. পাইথনে দিয়ে गये অক্ষरों থেকে বানানো সবচেয়ে বড় শব্দের দৈর্ঘ্য বের করার প্রোগ্রাম

  3. পাইথনে ম্যাট্রিক্সের ট্রান্সপোজ বের করার প্রোগ্রাম

  4. পাইথনে বাইনারি রিপ্রেজেন্টেশনে সর্বোচ্চ συνεχে ১-এর দৈর্ঘ্য বের করার প্রোগ্রাম