সমস্যা বিবরণ
একটি পূর্ণসংখ্যা অ্যারে দেওয়া আছে। আমাদের একটি কন্টিনিউয়াস সাবঅ্যারে খুঁজে বের করতে হবে যাতে শুধু সেই সাবঅ্যারেটিকে সাজানোর পর পুরো অ্যারেটি সাজানো হয়ে যায়। সবচোেট সাবঅ্যারের দৈর্ঘ্য বের করতে হবে।
উদাহরণ: [2,6,4,8,10,9,15] এর জন্য আউটপুট ৫। কারণ সাবঅ্যারে [6,4,8,10,9] সাজালে পুরো অ্যারে সাজানো হয়।
সমাধানের পদ্ধতি
- অ্যারেটির সাজানো কপি (res) তৈরি করুন।
- দুই অ্যারে তুলনা করে সেদিকের ইনডেক্সগুলো চিহ্নিত করুন যেগুলো ভিন্ন।
- যদি কোনো ভিন্নতা না থাকে, ০ ফেরত দিন।
- যদি শুধু একটি ভিন্নতা থাকে, ১ ফেরত দিন।
- অন্যথায় (শেষ ভিন্ন ইনডেক্স - প্রথম ভিন্ন ইনডেক্স + ১) ফেরত দিন।
পাইথন উদাহরণ
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