Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python में जांचने का प्रोग्राम कि सबऐरे को अंकगणितीय अनुक्रम से पुनर्व्यवस्थित किया जा सकता है या नहीं


मान लीजिए हमारे पास संख्याओं का एक क्रम nums है, और दो अन्य ऐरे l और r आकार m के हैं, ये l और r रेंज क्वेरी को दर्शाते हैं जैसे [l[i], r[i]]। हमें एक बूलियन अनुक्रम ans ढूंढना है, जहां ans[i] तब true होता है जब सबऐरे nums[l[i]], nums[l[i]+1], ... nums[r[i]] को अंकगणितीय अनुक्रम उत्पन्न करने के लिए व्यवस्थित किया जा सकता है, अन्यथा false।

एक अनुक्रम को अंकगणितीय कहा जाता है, यदि इसमें कम से कम दो तत्व होते हैं, और हर दो लगातार तत्वों के बीच का अंतर समान होता है। उदाहरण के लिए, कुछ अंकगणितीय अनुक्रम हैं: [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, False, 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] के रूप में पुनर्व्यवस्थित किया जा सकता है, यह मान्य है

समाधान के चरण

  1. new := l के आकार की सूची और सभी True मानों से भरी
  2. i को 0 से len(l)-1 तक:
    • data := nums[l[i]:r[i]+1] सबलिस्ट
    • data सूची को सॉर्ट करें
    • d := []
    • j को 0 से len(data)-2 तक:
      • data[j+1] - data[j] को d के अंत में डालें
    • d := list(set(d))
    • यदि len(d) != 1:
      • new[i] := False
  3. new वापस करें

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

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]
  1. - पायथन में दिए गए स्ट्रिंग कैरेक्टर से k पैलिंड्रोम बना सकते हैं या नहीं जांचने का प्रोग्राम

    मान लीजिए हमारे पास एक स्ट्रिंग s और एक अन्य संख्या k है, हमें जांचना है कि क्या हम s में सभी कैरेक्टर का उपयोग करके k पैलिंड्रोम बना सकते हैं या नहीं। उदाहरण के लिए, यदि इनपुट है s = amledavmel k = 2, तो आउटपुट True होगा, क्योंकि हम level और madam बना सकते हैं। इसे हल करने के लिए, हम निम्न चरणों क

  1. - पायथन में जांचें कि क्या हम बाएं या दाएं छोर तक पहुंच सकते हैं

    मान लीजिए हमारे पास तीन प्रकार के अक्षरों वाली एक स्ट्रिंग है: R, B, और डॉट (.)। यहां R हमारी वर्तमान स्थिति को दर्शाता है, B एक अवरुद्ध स्थिति को दर्शाता है, और डॉट (.) एक खाली स्थिति को दर्शाता है। अब, एक चरण में, हम अपनी वर्तमान स्थिति से किसी भी आसन्न स्थिति पर जा सकते हैं, जब तक कि वह वैध (खाली

  1. - पायथन में जांचने का प्रोग्राम कि क्या किसी शहर से किसी अन्य शहर तक जाया जा सकता है

    मान लीजिए हमारे पास n शहर हैं जिन्हें रेंज [0, n) में संख्या के रूप में दर्शाया गया है और हमारे पास एकतरफा सड़कों की एक सूची है जो एक शहर को दूसरे से जोड़ती है। हमें जांचना है कि क्या हम किसी शहर से किसी अन्य शहर तक पहुंच सकते हैं। उदाहरण के लिए, यदि इनपुट n = 3, roads = [[0,1],[0,2],[1,0],[1,2],[2