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

পাইথনে সবচোেট অনসর্টেড কন্টিনিউয়াস সাবঅ্যারে (Shortest Unsorted Continuous Subarray in Python)


সমস্যা বিবরণ

একটি পূর্ণসংখ্যা অ্যারে দেওয়া আছে। আমাদের একটি কন্টিনিউয়াস সাবঅ্যারে খুঁজে বের করতে হবে যাতে শুধু সেই সাবঅ্যারেটিকে সাজানোর পর পুরো অ্যারেটি সাজানো হয়ে যায়। সবচোেট সাবঅ্যারের দৈর্ঘ্য বের করতে হবে।

উদাহরণ: [2,6,4,8,10,9,15] এর জন্য আউটপুট ৫। কারণ সাবঅ্যারে [6,4,8,10,9] সাজালে পুরো অ্যারে সাজানো হয়।

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

  1. অ্যারেটির সাজানো কপি (res) তৈরি করুন।
  2. দুই অ্যারে তুলনা করে সেদিকের ইনডেক্সগুলো চিহ্নিত করুন যেগুলো ভিন্ন।
  3. যদি কোনো ভিন্নতা না থাকে, ০ ফেরত দিন।
  4. যদি শুধু একটি ভিন্নতা থাকে, ১ ফেরত দিন।
  5. অন্যথায় (শেষ ভিন্ন ইনডেক্স - প্রথম ভিন্ন ইনডেক্স + ১) ফেরত দিন।

পাইথন উদাহরণ

class Solution(object):
    def findUnsortedSubarray(self, nums):
        res = sorted(nums)
        r = []
        for i in range(len(res)):
            if nums[i] != res[i]:
                r.append(i)
        if not len(r):
            return 0
        if len(r) == 1:
            return 1
        return r[-1] - r[0] + 1

ob1 = Solution()
print(ob1.findUnsortedSubarray([2,6,4,8,10,9,15]))

ইনপুট

[2,6,4,8,10,9,15]

আউটপুট

5
  1. পাইথনে নির্দিষ্ট নোড ধারণকারী ন্যূনতম সাইকেলের দৈর্ঘ্য বের করার প্রোগ্রাম

  2. পাইথনে Maximum Product Subarray (সর্বাধিক গুণফলযুক্ত সাবঅ্যারে)

  3. পাইথনে ম্যাক্সিমাম সাবঅ্যারে (Maximum Subarray)

  4. দুটি আনসর্টেড লিস্ট থেকে সর্টেড মার্জড লিস্ট তৈরি করা (পাইথন)