मान लीजिए कि हमारे पास दो स्तंभों (जन्म, मृत्यु) के साथ एक तालिका है जहां प्रत्येक पंक्ति व्यक्ति के जन्म और मृत्यु के वर्षों का प्रतिनिधित्व कर रही है। किसी वर्ष 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