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

पायथन में दो दिए गए ऐरे से सब-अरे खोजें जिनका योग समान हो


मान लीजिए हमारे पास दो ऐरे P और Q हैं जिनका आकार N है, वे 1 से N तक की संख्याएं रखते हैं। हमें दिए गए ऐरे से सब-अरे ढूंढने हैं ताकि उनका योग समान हो। अंत में ऐसे सब-अरे के इंडेक्स लौटाएं। यदि कोई समाधान नहीं है, तो -1 लौटाएं।

तो, यदि इनपुट P = [2, 3, 4, 5, 6], Q = [9, 3, 2, 6, 5] जैसा है, तो आउटपुट होगा: पहले ऐरे में इंडेक्स: 0, 1, 2 और दूसरे ऐरे में इंडेक्स: 0, तो P[0..2] = 2 + 3 + 4 = 9 और Q[0] = 9।

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

  • get_subarray() फंक्शन परिभाषित करें। यह P, Q, swap लेगा।

  • N := P का आकार

  • index := एक नया मैप

  • difference := 0, j := 0

  • index[0] := (-1, -1) जैसा एक पेयर

  • i को 0 से N तक के लिए, करें:

    • जब Q[j] < P[i], करें:

      • j := j + 1

    • difference := Q[j] - P[i]

    • यदि difference index में मौजूद है, तो:

      • यदि swap सच है, तो:

        • idx := index[Q[j] - P[i]]

        • idx[1]+1 से j तक P के लिए सभी मान प्रदर्शित करें

        • idx[0]+1 से i तक Q के लिए सभी मान प्रदर्शित करें

      • अन्यथा,

        • idx := index[Q[j] - P[i]]

        • idx[0]+1 से i तक P के लिए सभी मान प्रदर्शित करें

        • idx[1]+1 से j तक Q के लिए सभी मान प्रदर्शित करें

      • लौटें

    • index[difference] := (i, j)

  • -1 प्रदर्शित करें

  • मुख्य विधि से, निम्नलिखित करें:

  • उनके संचयी योगों का उपयोग करके P और Q को अपडेट करें

  • N := P का आकार

  • यदि Q[N-1] > P[N-1], तो:

    • get_subarray(P, Q, False)

  • अन्यथा,

    • get_subarray(Q, P, True)

उदाहरण

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

def show_res(x, y, num):    print("Indices of array", num, ":", end = " ")    for i in range(x, y):       print(i, end = ", ")    print(y) def get_subarray(P, Q, swap):    N = len(P)    index = {}    difference, j = 0, 0    index[0] = (-1, -1)    for i in range(0, N):       while Q[j] < P[i]:          j += 1       difference = Q[j] - P[i]       if difference in index:          if swap:             idx = index[Q[j] - P[i]]             show_res(idx[1] + 1, j, 1)             show_res(idx[0] + 1, i, 2)          else:             idx = index[Q[j] - P[i]]             show_res(idx[0] + 1, i, 1)             show_res(idx[1] + 1, j, 2)          return       index[difference] = (i, j)    print(-1) def cumsum(arr):    n = len(arr)    for i in range(1, n):       arr[i] += arr[i - 1] P = [2, 3, 4, 5, 6] Q = [9, 3, 2, 6, 5] cumsum(P) cumsum(Q) N = len(P) if Q[N - 1] > P[N - 1]:    get_subarray(P, Q, False) else:    get_subarray(Q, P, True)

इनपुट

[2, 3, 4, 5, 6],[9, 3, 2, 6, 5]

आउटपुट

Indices of array 1 : 0, 1, 2 Indices of array 2 : 0

  1. पायथन में दिए गए योग वाले पेयर्स खोजें जैसे कि पेयर एलिमेंट्स अलग-अलग BSTs में हों पायथन में दिए गए योग वाले पेयर्स खोजें जैसे कि पेयर एलिमेंट्स अलग-अलग BSTs में हों

    मान लीजिए हमारे पास दो दिए गए बाइनरी सर्च ट्री हैं और एक और योग दिया गया है; हमें दिए गए योग के संबंध में पेयर्स ढूंढने हैं ताकि प्रत्येक पेयर के एलिमेंट्स अलग-अलग BSTs में हों।तो, यदि इनपुट sum = 12 जैसा हैतो आउटपुट [(6, 6), (7, 5), (9, 3)] होगा।इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंग

  1. - पायथन में अलग-अलग पंक्तियों में तत्वों वाले दिए गए योग के पेयर्स खोजें

    मान लीजिए हमारे पास अद्वितीय तत्वों का एक मैट्रिक्स और एक योग है; हमें मैट्रिक्स से उन सभी पेयर्स को ढूंढना है जिनका योग दिए गए योग के बराबर है। यहां, पेयर के प्रत्येक तत्व को अलग-अलग पंक्तियों से लिया जाएगा।तो, यदि इनपुट इस तरह है:24356987101114121311516sum = 13, तो आउटपुट [(2, 11), (4, 9), (3, 10)

  1. पायथन प्रोग्राम: दो क्रमबद्ध सरणियों से निकटतम जोड़ी खोजें पायथन प्रोग्राम: दो क्रमबद्ध सरणियों से निकटतम जोड़ी खोजें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें दो सरणियाँ दी गई हैं, हमें दो क्रमबद्ध सरणियों से निकटतम जोड़ी खोजने की आवश्यकता है। उदाहरण # sys मॉड्यूल import sys # जोड़ी def print_(ar1, ar2, m, n, x): # अंतर diff = sys.maxsize # इंडेक्स l = 0 r = n-1