ধরুন আমাদের কাছে দুটি কলাম (জন্ম, মৃত্যু) সহ একটি টেবিল রয়েছে যেখানে প্রতিটি সারি ith ব্যক্তির জন্ম এবং মৃত্যুর বছরগুলিকে প্রতিনিধিত্ব করছে। কোনো বছর y এর জনসংখ্যা হল y সময়ে জীবিত মানুষের সংখ্যা। ith ব্যক্তিকে বছরের y এর জনসংখ্যায় গণনা করা হয় যখন y অন্তর্ভুক্ত পরিসরে থাকে [জন্ম_i, মৃত্যু_i - 1]। (ব্যক্তির মৃত্যু যে বছরে গণনা করা হয় না)। সুতরাং, আমাদের সর্বাধিক জনসংখ্যার সাথে প্রথম বছরটি খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুট মত হয়
জন্ম | মৃত্যু |
1970 | 2010 |
1960 | 2020 |
1940 | 1970 |
তাহলে আউটপুট হবে 2 কারণ লক্ষ্যের সাথে মেলে শুধুমাত্র একটি মান, সেটি হল সংখ্যা[4], তাই i =4। এখন |4-2| =2।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
d :=একটি মানচিত্র, যেখানে কিছু কী পাওয়া না গেলে, 0
ফেরত দিন -
res :=দুটি আইটেম সহ একটি তালিকা [2051, 0]
-
জন্মের প্রতিটি বছরের জন্য YOB, এবং মৃত্যুর বছর YOD ম্যাট্রিক্সে, করুন
-
বছরের জন্য YOB থেকে YOD, করুন
-
d[বছর] :=d[বছর] + 1
-
যদি d[বছর]>=res[1], তাহলে
-
যদি d[বছর]> res[1] হয়, তাহলে
-
res :=দুটি উপাদান সহ একটি তালিকা [বছর, d[বছর]]
-
-
অন্যথায়,
-
res :=দুটি উপাদান সহ একটি তালিকা [(সর্বনিম্ন বছর এবং res[0]), res[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