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

Python में निकटतम बाएं और दाएं छोटे तत्वों के बीच अधिकतम अंतर ढूंढना


मान लीजिए हमारे पास पूर्णांकों की एक सरणी है; हमें सरणी में प्रत्येक तत्व के निकटतम बाएं और दाएं छोटे तत्व के बीच अधिकतम निरपेक्ष अंतर ढूंढना है। यदि किसी तत्व के दाएं या बाएं हाथ पर कोई छोटा तत्व नहीं है तो हम छोटे तत्व के रूप में शून्य रखेंगे।

तो, यदि इनपुट A = [3, 5, 9, 8, 8, 10, 4] की तरह है, तो आउटपुट 4 होगा क्योंकि बाएं तत्व L = [0, 3, 5, 5, 5, 8, 3], दाएं तत्व R = [0, 4, 8, 4, 4, 4, 0], अधिकतम निरपेक्ष अंतर L[i] - R[i] = 8 - 4 = 4।

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

  • एक फ़ंक्शन left_small_element() परिभाषित करें। यह A, temp लेगा

  • n := A का आकार

  • stack := एक नई सूची

  • i के लिए 0 से n की सीमा में, करें

    • जब तक stack खाली नहीं है और stack का शीर्ष तत्व >= A[i], करें

      • stack से अंतिम तत्व हटाएं

    • यदि stack खाली नहीं है, तो

      • temp[i] := stack का शीर्ष तत्व

    • अन्यथा,

      • temp[i] := 0

    • stack के अंत में A[i] डालें

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

  • n := A का आकार

  • left := n आकार की एक सूची और 0 से भरें

  • right := n आकार की एक सूची और 0 से भरें

  • left_small_element(A, left)

  • left_small_element(उल्टी A, right)

  • res := -1

  • i के लिए 0 से n की सीमा में, करें

    • res := res, |left[i] - right[n-1-i]| का अधिकतम

उदाहरण

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

def left_small_element(A, temp):     n = len(A)     stack = []     for i in range(n):         while(stack != [] and stack[len(stack)-1] >= A[i]):             stack.pop()         if(stack != []):             temp[i]=stack[len(stack)-1]         else:             temp[i]=0         stack.append(A[i]) def find_maximum_difference(A):     n = len(A)     left=[0]*n     right=[0]*n     left_small_element(A, left)     left_small_element(A[::-1], right)     res = -1     for i in range(n):         res = max(res, abs(left[i] - right[n-1-i]))     return res A = [3, 5, 9, 8, 8, 10, 4] print(find_maximum_difference(A))

इनपुट

[3, 5, 9, 8, 8, 10, 4]

आउटपुट

4

  1. पायथन में समकोण त्रिभुज के मध्य बिंदु और आधार के बीच का कोण खोजने का प्रोग्राम पायथन में समकोण त्रिभुज के मध्य बिंदु और आधार के बीच का कोण खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक समकोण त्रिभुज की दो भुजाएं हैं, ये भुजाएं AB और BC हैं। कर्ण AC का मध्य बिंदु M मानें। हमें M और BC के बीच का कोण ढूंढना है।उदाहरण के लिए, यदि इनपुट ab = 6 bc = 4 है, तो आउटपुट 56.309932474020215 होगा क्योंकि ab/bc का आर्क_टैन 0.9828 है लेकिन डिग्री में यह 56.31 है।समाधान दृष्

  1. पायथन में नोड और उसके वंशज के बीच अंतर खोजने का प्रोग्राम पायथन में नोड और उसके वंशज के बीच अंतर खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें किसी भी नोड और उसके वंशजों के बीच सबसे बड़ा निरपेक्ष अंतर ढूंढना है।उदाहरण के लिए, यदि इनपुट ट्री है:तो आउटपुट 7 होगा क्योंकि सबसे बड़ा निरपेक्ष अंतर नोड्स 8 और 1 के बीच है।समाधान दृष्टिकोणइसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे (पोस्ट-ऑर्डर

  1. Python में समान बाएं और दाएं उपट्री वाले सबसे बड़े उपट्री को ढूंढना Python में समान बाएं और दाएं उपट्री वाले सबसे बड़े उपट्री को ढूंढना

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें समान बाएं और दाएं उपट्री वाले सबसे बड़े उपट्री को ढूंढना है। पसंदीदा समय जटिलता O(n) है। तो, यदि इनपुट इस तरह है तो आउटपुट होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - एक फ़ंक्शन solve() परिभाषित करें। यह root, encode, maxSize, maxNode लेगा यदि