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

Python - रैखिक समय में आकार 3 का सॉर्टेड सबसीक्वेंस ढूंढना

मान लीजिए हमारे पास N नंबर्स की एक ऐरे है, हमें चेक करना है कि क्या 3 एलिमेंट्स ऐसे हैं कि b[i] < b[j] < b[k] और i < j < k रैखिक (O(n)) समय में। यदि ऐसे कई ट्रिपलेट्स हैं, तो उनमें से कोई भी एक प्रिंट करें।

तो, यदि इनपुट [13, 12, 11, 6, 7, 3, 31] जैसा है, तो आउटपुट [6, 7, 31] होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:

  • n := A का आकार
  • maximum := n-1, minimum := 0
  • smaller := आकार 10000 की ऐरे, 0 से भरी
  • smaller[0] := -1
  • i को 1 से n तक रेंज में, करें
    • यदि A[i] <= A[minimum], तो
      • minimum := i
      • smaller[i] := -1
    • अन्यथा,
      • smaller[i] := minimum
  • greater := आकार 10000 की ऐरे, 0 से भरी
  • greater[n-1] := -1
  • i को n-2 से -1 तक, 1 से घटाते हुए, करें
    • यदि A[i] >= A[maximum], तो
      • maximum := i
      • greater[i] := -1
    • अन्यथा,
      • greater[i] := maximum
  • i को 0 से n तक रेंज में, करें
    • यदि smaller[i] != -1 और greater[i] != -1, तो
      • A[smaller[i]], A[i], A[greater[i]] लौटाएं
  • "Nothing" लौटाएं

उदाहरण

बेहतर समझ के लिए निम्नलिखित इम्प्लीमेंटेशन देखें:

def find_inc_seq(A):
    n = len(A)
    maximum = n - 1
    minimum = 0
    smaller = [0] * 10000
    smaller[0] = -1
    for i in range(1, n):
        if A[i] <= A[minimum]:
            minimum = i
            smaller[i] = -1
        else:
            smaller[i] = minimum
    greater = [0] * 10000
    greater[n - 1] = -1
    for i in range(n - 2, -1, -1):
        if A[i] >= A[maximum]:
            maximum = i
            greater[i] = -1
        else:
            greater[i] = maximum
    for i in range(n):
        if smaller[i] != -1 and greater[i] != -1:
            return A[smaller[i]], A[i], A[greater[i]]
    return "Nothing"

arr = [13, 12, 11, 6, 7, 3, 31]
print(find_inc_seq(arr))

इनपुट

[13, 12, 11, 6, 7, 3, 31]

आउटपुट

(6, 7, 31)
  1. - पायथन में सबसे लंबा बढ़ता हुआ सबसीक्वेंस

    मान लीजिए हमारे पास पूर्णांकों की एक अनसॉर्टेड लिस्ट है। हमें सबसे लंबा बढ़ता हुआ सबसीक्वेंस ढूंढना है। इसलिए यदि इनपुट [10,9,2,5,3,7,101,18] है, तो आउटपुट 4 होगा, क्योंकि बढ़ता हुआ सबसीक्वेंस [2,3,7,101] है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - trail := लंबाई 0 से nums की लंबाई - 1 तक

  1. - Python में सूची का आकार ढूंढना

    सूची Python में एक संग्रह डेटा प्रकार है। सूची में तत्व परिवर्तनशील होते हैं और तत्वों से जुड़ा कोई विशिष्ट क्रम नहीं होता है। इस लेख में हम देखेंगे कि Python में सूची की लंबाई कैसे ढूंढें। जिसका अर्थ है कि हमें सूची में मौजूद तत्वों की संख्या प्राप्त करनी है चाहे वे डुप्लीकेट हों या नहीं।उदाहरणनीचे

  1. - पायथन का उपयोग करके समय अंतर कैसे खोजें?

    पायथन में टाइम डेल्टा ऑब्जेक्ट का उपयोग करके डेट और टाइम मैथ करना बहुत आसान है। जब भी आप किसी डेट/टाइम में जोड़ना या घटाना चाहते हैं, तो DateTime.datetime() का उपयोग करें, फिर date time.timedelta() इंस्टेंस को जोड़ें या घटाएं। एक टाइम डेल्टा ऑब्जेक्ट एक अवधि को दर्शाता है, दो डेट या टाइम के बीच का