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

पायथन में एक अंतराल सूची में सम्मिलित करने के लिए एक न्यूनतम संभव अंतराल खोजने का कार्यक्रम

मान लीजिए कि हमारे पास अंतराल नामक संख्याओं की एक 2D सूची है, जहां प्रत्येक पंक्ति [प्रारंभ, अंत] (समावेशी) अंतराल का प्रतिनिधित्व करती है। एक अंतराल [ए, बी] (ए <बी) के लिए, इसका आकार (बी - ए) है। हमें दी गई सूची में एक अंतराल इस तरह जोड़ना चाहिए कि सभी अंतरालों को मिलाने के बाद, हमें ठीक एक सीमा शेष मिले। हमें जोड़े गए अंतराल का न्यूनतम संभव आकार खोजना होगा।

इसलिए, यदि इनपुट अंतराल =[[15, 20], [30, 50]] की तरह है, तो आउटपुट 10 होगा, क्योंकि हम अंतराल [20, 30] जोड़ सकते हैं जो कि सबसे छोटा संभव अंतराल है।

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

  • ईवेंट :=एक नई सूची
  • प्रत्येक प्रारंभ और समाप्ति समय s के लिए, e अंतराल में, करें
    • इवेंट के अंत में (ओं, 1) डालें
    • इवेंट के अंत में (e, -1) डालें
  • सूची ईवेंट क्रमबद्ध करें
  • curr_status :=0, last:=null
  • अंतराल:=एक जोड़ी [0, 0]
  • घटनाओं में प्रत्येक जोड़ी (समय, स्थिति) के लिए, करें
    • यदि curr_status 0 और अंतिम और समय> अंतिम के समान है, तो
      • यदि अंतराल [0] 0 के समान है, तो
        • अंतराल[0] :=अंतिम
      • अंतराल[1] :=समय
    • अंतिम:=समय
    • curr_status :=curr_status + status
  • वापसी अंतराल[1] - अंतराल[0]

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

उदाहरण

class Solution:
   def solve(self, intervals):
      events = []
      for s, e in intervals:
         events.append((s, 1))
         events.append((e, -1))
      events.sort()
      curr_status = 0
      last = None
      interval = [0, 0]
      for time, status in events:
         if curr_status == 0 and last and time > last:
            if interval[0] == 0:
               interval[0] = last
            interval[1] = time
         last = time
         curr_status += status
      return interval[1] - interval[0]
ob = Solution()
intervals = [[15, 20],[30, 50]] print(ob.solve(intervals))

इनपुट

[[15, 20],[30, 50]]

आउटपुट

10

  1. पायथन में एक-एक करके ब्लॉकों को ग्रिड में जोड़कर द्वीप गणना खोजने का कार्यक्रम

    मान लीजिए हमारे पास पानी का एक अनंत ग्रिड है। हम उस ग्रिड में एक-एक करके भूमि के ब्लॉक जोड़ सकते हैं। हमारे पास निर्देशांकों की एक सूची है जिसे Land_requests कहा जाता है जहां प्रत्येक निर्देशांक [r, c] के रूप में होता है जहां r पंक्ति के लिए होता है और c स्तंभ के लिए होता है। हमें एक सूची ढूंढनी होग

  1. पायथन प्रोग्राम एक तत्व को क्रमबद्ध सूची में सम्मिलित करने के लिए

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें क्रमबद्ध क्रम को बदले बिना सूची में एक तत्व डालने की आवश्यकता है नीचे चर्चा के अनुसार दो दृष्टिकोण हैं- दृष्टिकोण 1:पाशविक बल विधि उदाहरण def insert(list_, n):    # search  

  1. एक सूची का संचयी योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें संचयी राशि के साथ एक सूची बनानी होगी। आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # cumulative sum def Cumulative(l):    new = []    cumsum = 0   &nb