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

पायथन का उपयोग करके अधिकतम जनसंख्या वर्ष खोजने का कार्यक्रम

मान लीजिए कि हमारे पास दो स्तंभों (जन्म, मृत्यु) के साथ एक तालिका है जहां प्रत्येक पंक्ति व्यक्ति के जन्म और मृत्यु के वर्षों का प्रतिनिधित्व कर रही है। किसी वर्ष y की जनसंख्या y के दौरान जीवित लोगों की संख्या है। वें व्यक्ति की गणना वर्ष y की जनसंख्या में की जाती है जब y समावेशी श्रेणी में होता है [birth_i, Death_i - 1]। (जिस व्यक्ति की मृत्यु होती है उस वर्ष में व्यक्ति की गणना नहीं की जाती है)। इसलिए, हमें अधिकतम जनसंख्या वाला सबसे पहला वर्ष खोजना होगा।

तो, अगर इनपुट पसंद है

जन्म मृत्यु
1970 2010
1960 2020
1940 1970

तो आउटपुट 2 होगा क्योंकि केवल एक ही मान है जो लक्ष्य से मेल खाता है, वह है nums[4], इसलिए i =4. अब |4-2| =2.

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

  • d :=एक नक्शा, जहां अगर कुछ कुंजी नहीं मिलती है, तो वापस 0

  • res :=दो वस्तुओं के साथ एक सूची [2051, 0]

  • जन्म के प्रत्येक वर्ष के लिए YOB, और मृत्यु का वर्ष YOD मैट्रिक्स में, करें

    • वर्ष के लिए YOB से YOD तक, करें

      • घ [वर्ष] :=घ [वर्ष] + 1

      • यदि d[वर्ष]>=res[1], तो

        • अगर घ [वर्ष]> रेस[1], तो

          • res :=दो तत्वों के साथ एक सूची [वर्ष, घ[वर्ष]]

        • अन्यथा,

          • रेस :=दो तत्वों के साथ एक सूची [(न्यूनतम वर्ष और रेस [0]), रेस [1]]

  • रिटर्न रेस[0]

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

उदाहरण

from collections import defaultdict
def solve(matrix):
   d = defaultdict(int)
   res = [2051, 0]
   for YOB, YOD in matrix:
      for year in range(YOB, YOD):
         d[year] += 1
         if d[year] >= res[1]:
            if d[year] > res[1]:
               res = [year, d[year]]
            else:
               res = [min(year, res[0]), res[1]]
   return res[0]
matrix = [[1970,2010],[1960,2020],[1940,1970]]
print(solve(matrix))

इनपुट

[[1970,2010],[1960,2020],[1940,1970]]

आउटपुट

1960

  1. पायथन में समान लंबाई के k रिबन की अधिकतम लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास सकारात्मक संख्याओं की एक सूची है, जो रिबन की लंबाई का प्रतिनिधित्व करती है और एक मान k भी है। हम जितनी बार चाहें रिबन काट सकते हैं, हमें सबसे बड़ी लंबाई r ढूंढनी होगी जैसे कि हमारे पास लंबाई r के k रिबन हो सकें। अगर हमें ऐसा समाधान नहीं मिल रहा है, तो -1 पर लौटें। इसलिए, यदि

  1. पायथन में अधिकतम भवन ऊंचाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक मान n है और जोड़े की एक और सूची है जिसे प्रतिबंध कहा जाता है। हम एक शहर में नई इमारतें बनाना चाहते हैं। लेकिन कुछ प्रतिबंध हैं। हम एक लाइन में बना सकते हैं और इमारतों को 1 से n तक लेबल किया जाता है। प्रतिबंधों के दो पैरामीटर हैं, इसलिए प्रतिबंध [i] =(id_i, max_height_i) इंग

  1. पायथन का उपयोग करके अधिकतम संभावना के साथ पथ खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास n नोड्स के साथ एक अप्रत्यक्ष भारित ग्राफ है (नोड्स 0 से आगे गिने जाते हैं), यह ग्राफ एज सूची का उपयोग करके इनपुट के रूप में दिया जाता है, प्रत्येक किनारे ई के लिए, उस किनारे की संभावना [ई] को पार करने की सफलता की संभावना है। हमारे पास प्रारंभ और अंत नोड्स भी हैं, हमें शुरुआत स