ধরুন আমাদের একটি পূর্ণসংখ্যা অ্যারে আছে, আমাদের একটি অবিচ্ছিন্ন সাবয়ারে খুঁজে বের করতে হবে, যদি আমরা শুধুমাত্র সেই সাবয়ারেটিকে আরোহী ক্রমে সাজান, তাহলে পুরো অ্যারেটিও সাজানো হবে। আমাদের এই জাতীয় ক্ষুদ্রতম সাবয়ারে খুঁজে বের করতে হবে এবং এর দৈর্ঘ্য বের করতে হবে। সুতরাং যদি অ্যারেটি [2,6,4,8,10,9,15] হয়, তাহলে আউটপুট হবে 5। অ্যারেটি হবে [6,4,8,10,9]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
res :=সংখ্যাগুলিকে অ্যারে হিসাবে সাজান
-
উত্তর :=0
-
একটি লিঙ্ক তালিকা হিসাবে r সেট করুন
-
i এর জন্য রেঞ্জ 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