ধরুন আমাদের কাছে সংখ্যার ক্রম রয়েছে এবং m আকারের আরও দুটি অ্যারে l এবং r আছে, এই l এবং rগুলি [l[i], r[i]] এর মতো পরিসরের প্রশ্নগুলিকে উপস্থাপন করছে। আমাদের একটি বুলিয়ান সিকোয়েন্স উত্তর খুঁজে বের করতে হবে, যেখানে ans[i] সত্য হয় যখন সাবয়ারের সংখ্যা[l[i]], nums[l[i] + 1], ... nums[r[i] - 1], nums[r[i]] একটি গাণিতিক ক্রম তৈরি করার জন্য সাজানো যেতে পারে, অন্যথায় মিথ্যা।
একটি ক্রমকে পাটিগণিত বলা হয়, যদি এটি কমপক্ষে দুটি উপাদান নিয়ে গঠিত এবং প্রতিটি দুটি পরপর উপাদানের মধ্যে পার্থক্য একই। উদাহরণস্বরূপ, কিছু পাটিগণিত ক্রম হল:[2, 4, 6, 8, 10], [5, 5, 5, 5], [4, -2, -8, -14], কিন্তু নয় [2, 2, 3, 6, 9]।
সুতরাং, ইনপুট যদি nums =[6,8,7,11,5,9], l =[0,0,2], r =[2,3,5] এর মত হয়, তাহলে আউটপুট হবে [True] , মিথ্যা, সত্য] কারণ −
-
প্রশ্নের জন্য [0, 2], ক্রম হল [6,8,7], এটি [6,7,8] হিসাবে পুনর্বিন্যাস করা যেতে পারে, এটি বৈধ
-
প্রশ্নের জন্য [0, 3], ক্রম হল [6,8,7,11], গাণিতিক ক্রমানুসারে পুনর্বিন্যাস করা যাবে না
-
প্রশ্নের জন্য [2, 5], ক্রম হল [7,11,5,9], [5,7,9,11] হিসাবে পুনর্বিন্যাস করা যেতে পারে, এটি বৈধ
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
new :=l এর মতো আকারের একটি তালিকা এবং সমস্ত সত্য মান দিয়ে পূরণ করুন
-
আমি 0 থেকে l - 1 এর আকারের মধ্যে, কর
-
ডেটা :=সূচক l[i] থেকে r[i]
পর্যন্ত সংখ্যার সাবলিস্ট -
তালিকার ডেটা সাজান
-
d :=একটি নতুন তালিকা
-
j-এর জন্য রেঞ্জ 0 থেকে ডেটার আকার - 2, করুন
-
d
এর শেষে ডেটা[j+1] - ডেটা[j] সন্নিবেশ করান
-
-
d :=d
থেকে একটি নতুন সেট থেকে একটি নতুন তালিকা -
যদি d এর আকার 1 এর মত না হয়, তাহলে
-
new[i] :=মিথ্যা
-
-
-
নতুন ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(nums, l, r): new = [True]*len(l) for i in range(len(l)): data = nums[l[i]:r[i]+1] data.sort() d = [] for j in range(len(data) - 1): d.append(data[j+1] - data[j]) d = list(set(d)) if len(d) != 1: new[i] = False return new nums = [6,8,7,11,5,9] l = [0,0,2] r = [2,3,5] print(solve(nums, l, r))
ইনপুট
[6,8,7,11,5,9], [0,0,2], [2,3,5]
আউটপুট
[True,False,True]