কম্পিউটার

পাইথনে আরও ভাল ভিউ আছে এমন বিল্ডিংগুলি খুঁজে বের করার প্রোগ্রাম


ধরুন, আমাদের একটি অ্যারে দেওয়া হয়েছে যাতে বিভিন্ন বিল্ডিংয়ের উচ্চতা রয়েছে। বিল্ডিংগুলি একটি লাইনে অবস্থিত, এবং একটি বিল্ডিংকে আরও ভাল দৃশ্য দেখা যায় যদি এটি অন্য একটি উঁচু ভবন দ্বারা বাধা না হয়। সুতরাং উচ্চতা সম্বলিত বিন্যাস প্রদান করে, আমাদের এমন বিল্ডিংগুলি খুঁজে বের করতে হবে যেগুলির থেকে দৃশ্যে বাধা দেওয়ার জন্য অন্য লম্বা বিল্ডিং নেই। সূচকগুলি সেই অ্যারে থেকে ফেরত দেওয়া হয় যা মানদণ্ড পূরণ করে৷

সুতরাং, যদি ইনপুট উচ্চতা =[5, 6, 8, 7] এর মত হয়, তাহলে আউটপুট হবে [2, 3]। অ্যারে সূচক 0 এবং 1-এর বিল্ডিংগুলি সূচক 2-এ বিল্ডিং দ্বারা বাধাগ্রস্ত হয়। সূচক 2 এবং 3-এর বিল্ডিংটি অবরুদ্ধ নয় কারণ 2 পজিশনের লম্বা বিল্ডিংটি 3 পজিশনে ছোট বিল্ডিংয়ের পিছনে অবস্থিত।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • res :=একটি নতুন তালিকা
  • h :=0
  • আমি পরিসরে (উচ্চতার মাপ - 1) থেকে -1, 1 দ্বারা হ্রাস করুন, করুন
    • যদি উচ্চতা[i]> h , তারপর
      • res এর শেষে i ঢোকান
      • h :=উচ্চতা[i]
  • লিস্ট রেস-এর বিপরীত দিকটি ফেরত দিন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

def solve(heights):
   res, h = [], 0
   for i in range(len(heights) - 1, -1, -1):
      if heights[i] > h:
         res.append(i)
         h = heights[i]
   return res[::-1]

print(solve([5, 6, 8, 7]))

ইনপুট

[5, 6, 8, 7]

আউটপুট

[2, 3]

  1. ন্যূনতম খরচ খুঁজে বের করার প্রোগ্রাম যাতে নাগরিকদের পাইথনের একটি বাজারে অ্যাক্সেস থাকে

  2. পাইথনের প্রত্যেকের দ্বারা গ্রাফটি অতিক্রম করা যায় কিনা তা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে গ্রাফ সংযোগ বিচ্ছিন্ন করে এমন প্রান্তগুলি খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে অধ্যয়নের কার্যকর উপায় খুঁজে বের করার প্রোগ্রাম