मान लीजिए हमारे पास दो कॉलम (जन्म, मृत्यु) वाली एक तालिका है जहां प्रत्येक पंक्ति ith व्यक्ति के जन्म और मृत्यु वर्ष का प्रतिनिधित्व करती है। किसी वर्ष y की जनसंख्या y के दौरान जीवित लोगों की संख्या है। ith व्यक्ति को वर्ष y की जनसंख्या में गिना जाता है जब y, [birth_i, death_i - 1] समावेशी रेंज में होता है। (व्यक्ति को उस वर्ष नहीं गिना जाता जब वे मरते हैं)। इसलिए, हमें अधिकतम जनसंख्या वाला सबसे पहला वर्ष ढूंढना है।
उदाहरण के लिए, यदि इनपुट इस तरह है:
| जन्म | मृत्यु |
| 1970 | 2010 |
| 1960 | 2020 |
| 1940 | 1970 |
तो आउटपुट 1960 होगा क्योंकि 1960 में अधिकतम जनसंख्या है।
हल करने के चरण
d := एक मैप, जहां यदि कोई कुंजी नहीं मिलती है, तो 0 वापस करें
res := दो आइटम वाली सूची [2051, 0]
मैट्रिक्स में प्रत्येक जन्म वर्ष YOB, और मृत्यु वर्ष YOD के लिए, करें
year को YOB से YOD तक की रेंज में लिए करें
d[year] := d[year] + 1
यदि d[year] >= res[1], तो
यदि d[year] > res[1], तो
res := दो तत्वों वाली सूची [year, d[year]]
अन्यथा,
res := दो तत्वों वाली सूची [year और res[0] का न्यूनतम, res[1]]
res[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