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

পাইথনে অ্যারে ডিসজয়েন্ট ইন্টারভালে পার্টিশন করার প্রোগ্রাম


আমাদের একটি অ্যারে nums আছে, আমাদের এটিকে দুটি আলাদা সাবঅ্যারে left এবং right-এ পার্টিশন করতে হবে যাতে:

  • left সাবঅ্যারেতে প্রতিটি উপাদান right সাবঅ্যারেতে প্রতিটি উপাদানের চেয়ে কম বা সমান

  • left এবং right সাবঅ্যারে দুটোই নন-এমপ্টি

  • left সাবঅ্যারেতে সম্ভাব্য সবচেয়ে ছোট আকার থাকে

আমাদের ას 겪 পার্টিশনের পর left-এর দৈর্ঘ্য বের করতে হবে।

উদাহরণস্বরূপ, ইনপুট nums = [5,0,3,8,6] হলে আউটপুট হবে 3 কারণ left অ্যারে হবে [5,0,3] এবং right সাবঅ্যারে হবে [8,6]।

সমাধানের ধাপসমূহ

  • mx := None, temp := None, nmx := None

  • temp2 := 0

  • nums-এর প্রতিটি i এর জন্য:

    • যদি mx == None হয়, তবে:

      • mx := i

      • nmx := i

      • temp := temp2

      • temp2 := temp2 + 1

      • পরবর্তী ইটারেশনে যান

    • যদি i >= mx হয়, তবে:

      • temp2 := temp2 + 1

      • যদি i > nmx হয়, তবে:

        • nmx := i

      • পরবর্তী ইটারেশনে যান

    • অন্যথায়:

      • temp := temp2

      • temp2 := temp2 + 1

      • mx := nmx

      • পরবর্তী ইটারেশনে যান

  • temp + 1 রিটার্ন করুন

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালোভাবে বুঝার জন্য:

def solve(nums):
    mx = None
    temp = None
    nmx = None
    temp2 = 0
    for i in nums:
        if mx is None:
            mx = i
            nmx = i
            temp = temp2
            temp2 += 1
            continue
        if i >= mx:
            temp2 += 1
            if i > nmx:
                nmx = i
            continue
        else:
            temp = temp2
            temp2 += 1
            mx = nmx
            continue
    return temp + 1

nums = [5,0,3,8,6]
print(solve(nums))

ইনপুট

[5,0,3,8,6]

আউটপুট

3
  1. পাইথন প্রোগ্রাম অ্যারেতে সবচেয়ে বড় এলিমেন্ট বের করা

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

  3. পাইথনে অ্যারে থেকে সর্বোচ্চ এলিমেন্ট বের করা

  4. পাইথনে অ্যারে গুণফলকে n দিয়ে ভাগ করার অবশেষ বের করার প্রোগ্রাম