मान लीजिए कि हमारे पास संख्याओं का क्रम है, और अन्य दो सरणियाँ l और r आकार m की हैं, ये l और r श्रेणी प्रश्नों का प्रतिनिधित्व कर रहे हैं जैसे [l[i], r[i]]। हमें एक बूलियन अनुक्रम उत्तर खोजना है, जहां उत्तर [i] सत्य है जब सबअरे अंक [एल [i]], अंक [एल [i] + 1], ... अंक [आर [i] - 1], nums[r[i]] को अंकगणितीय अनुक्रम उत्पन्न करने के लिए व्यवस्थित किया जा सकता है, अन्यथा गलत।
एक अनुक्रम को अंकगणित कहा जाता है, यदि इसमें कम से कम दो तत्व होते हैं, और प्रत्येक दो लगातार तत्वों के बीच का अंतर समान होता है। उदाहरण के लिए, कुछ अंकगणितीय अनुक्रम हैं:[2, 4, 6, 8, 10], [5, 5, 5, 5], [4, -2, -8, -14], लेकिन नहीं [2, 2, 3, 6, 9]।
इसलिए, यदि इनपुट अंकों की तरह है =[6,8,7,11,5,9], l =[0,0,2], r =[2,3,5], तो आउटपुट [सच] होगा , असत्य, सत्य] क्योंकि -
-
क्वेरी के लिए [0, 2], अनुक्रम [6,8,7] है, इसे [6,7,8] के रूप में पुनर्व्यवस्थित किया जा सकता है, यह मान्य है
-
क्वेरी के लिए [0, 3], अनुक्रम [6,8,7,11] है, अंकगणितीय अनुक्रम में पुनर्व्यवस्थित नहीं किया जा सकता
-
क्वेरी के लिए [2, 5], अनुक्रम [7,11,5,9] है, [5,7,9,11] के रूप में पुनर्व्यवस्थित किया जा सकता है, यह मान्य है
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
नया :=l के समान आकार की एक सूची और सभी सही मानों से भरें
-
मैं के लिए 0 से लेकर l-1 के आकार तक, करो
-
डेटा :=इंडेक्स l[i] से r[i]
. तक अंकों की सबलिस्ट -
सूची डेटा सॉर्ट करें
-
d :=एक नई सूची
-
j के लिए 0 से लेकर डेटा के आकार - 2 तक, करें
-
डेटा डालें[j+1] - डेटा[j] d के अंत में
-
-
d :=d के नए सेट से एक नई सूची
-
यदि d का आकार 1 के समान नहीं है, तो
-
नया [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]