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

पायथन में किसी संख्या और उसके अगले छोटी संख्या के अधिकतम अंतर का प्रोग्राम


मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें किसी भी संख्या और अगली छोटी संख्या के बीच मौजूद अधिकतम अंतर ज्ञात करना है। हमारा लक्ष्य इसे रैखिक समय में हल करना है।

इसलिए, यदि इनपुट nums = [14, 2, 6, 35, 12] जैसा है, तो आउटपुट 21 होगा, क्योंकि 35 और 14 का सबसे बड़ा अंतर 21 है।

हल करने के चरण

  • max_val := nums का अधिकतम, min_val := nums का न्यूनतम

  • यदि max_val, min_val के समान है, तो 0 लौटाएं

  • delta := (max_val - min_val) / (nums का आकार - 1)

  • min_map := एक खाली मैप (यदि कुछ मान नहीं हैं तो inf लौटाएं)

  • max_map := एक खाली मैप (यदि कुछ मान नहीं हैं तो -inf लौटाएं)

  • res := 0, idx := 0

  • nums में प्रत्येक num के लिए, करें

    • idx := ((num - min_val) / delta) का फ्लोर

    • max_map[idx] := max_map[idx] और num का अधिकतम

    • min_map[idx] := min_map[idx] और num का न्यूनतम

  • prev := min_val

  • i के लिए 0 से nums के आकार - 1 तक की रेंज में, करें

    • यदि min_map[i], inf के समान नहीं है, तो

      • res := res और (min_map[i] - prev) का अधिकतम

      • prev := max_map[i]

  • res लौटाएं

उदाहरण

from collections import defaultdict
import math

class Solution:
    def solve(self, nums):
        max_val = max(nums)
        min_val = min(nums)
        if max_val == min_val:
            return 0
        delta = (max_val - min_val) / (len(nums) - 1)
        min_map = defaultdict(lambda: float("inf"))
        max_map = defaultdict(lambda: float("-inf"))
        res = 0
        idx = 0
        for num in nums:
            idx = math.floor((num - min_val) / delta)
            max_map[idx] = max(max_map[idx], num)
            min_map[idx] = min(min_map[idx], num)
        prev = min_val
        for i in range(len(nums)):
            if min_map[i] != float("inf"):
                res = max(res, min_map[i] - prev)
                prev = max_map[i]
        return res

ob = Solution()
nums = [14, 2, 6, 35, 12]
print(ob.solve(nums))

इनपुट

[14, 2, 6, 35, 12]

आउटपुट

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

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

  1. - पायथन में x, y, z अक्षरों की i, j, k संख्या वाले सबसीक्वेंस की संख्या ढूंढने का प्रोग्राम

    मान लीजिए हमारे पास x, y और z के साथ एक स्ट्रिंग s है, हमें उन सबसीक्वेंस की संख्या ढूंढनी है जिनमें i संख्या के x कैरेक्टर्स हैं, उसके बाद j संख्या के y कैरेक्टर्स और उसके बाद k संख्या के z कैरेक्टर्स हैं जहां i, j, k ≥ 1। तो, अगर इनपुट है s = xxyz, तो आउटपुट 3 होगा, क्योंकि हम दो xyz और एक xxyz

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

    मान लीजिए हमारे पास पूर्णांकों की एक सरणी है; हमें सरणी में प्रत्येक तत्व के निकटतम बाएं और दाएं छोटे तत्व के बीच अधिकतम निरपेक्ष अंतर ढूंढना है। यदि किसी तत्व के दाएं या बाएं हाथ पर कोई छोटा तत्व नहीं है तो हम छोटे तत्व के रूप में शून्य रखेंगे। तो, यदि इनपुट A = [3, 5, 9, 8, 8, 10, 4] की तरह है, तो