ধরুন আমাদের n আকারের একটি প্রদত্ত একটি সাজানো বিন্যাস A[0..n-1] আছে, আমাদের ন্যূনতম দৈর্ঘ্যের সাবয়ারে A[s..e] খুঁজে বের করতে হবে যাতে সাজানোর মাধ্যমে এই subarray পুরো অ্যারে সাজানো হবে. সুতরাং, যদি অ্যারের মত হয় [2,6,4,8,10,9,15], তাহলে আউটপুট হবে 5। সাবয়ারে হবে [6,4,8,10,9]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
res :=সংখ্যাগুলিকে অ্যারে হিসাবে সাজান
-
উত্তর :=0
-
একটি লিঙ্ক তালিকা হিসাবে r সেট করুন
-
আমি 0 থেকে রেজুলেশনের দৈর্ঘ্যের মধ্যে
-
যদি nums[i] res[i] এর মত না হয়, তাহলে r এ i ঢোকান
-
-
যদি r-এর দৈর্ঘ্য 0 হয়, তাহলে 0 ফেরত দিন, যদি r-এর দৈর্ঘ্য 1 হয়, তাহলে 1 ফেরত দিন
-
r এর শেষ উপাদান ফেরত দিন - r + 1
এর প্রথম উপাদান
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
class Solution(object): def findUnsortedSubarray(self, nums): res = sorted(nums) ans = 0 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