Leetcode හි “Top K Frequent Elements” ප්රශ්නය, ඇරේ එකක ඇති සංඛ්යාත වැඩිම අගයන් k ක් හඳුනා ගැනීමට අයත් වේ. පළමුව මෙය සරල වාක්යයක් පරිදි පෙනුනත්, Dunning‑Kruger ආතතියක් නිසා බොහෝ දෙනාට අභියෝගයක් වෙයි. ඉදිරියට ගියොත්, ගූගල් සෙවුමෙන් Bucket Sort යන අලගුorithm එකක් හමුවේ.
Bucket Sort යනු, දත්ත ගොඩක් කුඩා “බකට්” (bucket) වලට වෙන් කර, ඒවායේ සංඛ්යාත අනුව ඉදිරිපත් කිරීමේ ක්රමයකි. මෙය O(n) කාල සංකීර්ණතාවයක් ලබා දෙන නිසා, Leetcode විසින් ඉල්ලූ “ideal solution” එකට සරිලනවා.
පියවර 1 – දත්ත ව්යුහ සකස් කිරීම
- hashmap (dictionary) එකක් නිර්මාණය කර, සංඛ්යාත ගණන සටහන් කරයි.
- bucket ලැයිස්තුවක්, දිග
len(nums)+1වන, පිරිසිදු ඇරේ එකක් ලෙස සකසයි. - ඉතිරි ප්රතිඵල රැස් කරන result ලැයිස්තුවක් තැනේ.
පියවර 2 – සංඛ්යාත ගණනය
ඇරේ එකේ සෑම සංඛ්යාවක්ම ගමන් කර, hashmap හි key ලෙස සංඛ්යාව, value ලෙස එහි පේළි ගණන සටහන් කරයි. Python හි dict.get() ක්රමය භාවිතා කර, අඩංගු නැත්නම් 1 ලෙස ආරම්භ කරයි.
පියවර 3 – Bucket Sort යෙදීම
hashmap හි (number, frequency) යුගල ගොඩක් ගෙන, frequency අගය bucket අංකයට පරිවර්තනය කර, ඒ bucket එකේ අදාළ සංඛ්යාව ඇතුළත් කරයි. මෙයින් සංඛ්යාවන් වර්ගීකරණය වේ, වැඩි සංඛ්යාවන් ඉහල bucket (ඉහළ අංක) තුළ පවතී.
පියවර 4 – ප්රතිඵල ලබා ගැනීම
bucket ලැයිස්තුවේ අන්තිම අන්තර්ගතයෙන් ආරම්භ කර, හිස් නොවන bucket එකක් සොයා, එහි අඩංගු සංඛ්යාවන් result ලැයිස්තුවට එකතු කරයි. result ලැයිස්තුවේ දිග k වෙද්දී පසුබැසීම නවතා, අවසන් ප්රතිඵලය ලබා දෙයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
මෙම විසඳුම ශ්රී ලංකාවේ තරුණ ඩිවෙලපර්, විශ්වවිද්යාල සිසුන්, හා තාක්ෂණික ආයතන සඳහා විශාල වටිනාකමක් ගෙන එයි:
- අභ්යන්තර අන්තර්ජාල තරඟ – Leetcode වැනි ප්රශ්නවලට O(n) විසඳුම් දැන ගැනීම, ජාත්යන්තර තාක්ෂණ සම්මතයන්ට අනුකූලව සකස් කිරීමට උපකාරී වේ.
- දත්ත සැකසුම් කුසලතා – hashmap, bucket sort වැනි දත්ත ව්යුහ භාවිතය, Python සහ Java අතර පාරිභෝගිකත්වය වැඩි කරයි.
- ව්යාපාරික ප්රයෝජන – ගනුදෙනුකරුවන්ගේ ක්රියාකාරකම් සංඛ්යාත විශ්ලේෂණය කර, ඉහළම භාවිතය ඇති නිෂ්පාදන හඳුනා ගැනීමට මෙම ක්රමය භාවිතා කළ හැක.
අදාල කේතය 30 මිනිත්තු පමණක් ගත කර ලියැවුණ අතර, Java පසුබැසීමක සිට Python භාවිතා කරන අයටද එය අත්හදා බැලීමට සුලභයි.
ඔබත් මෙවැනි අලගුorithm කුසලතා වැඩිදියුණු කර, තාක්ෂණික සභාවලදී ඉදිරියට යන්න කැමති නම්, මෙම උදාහරණය අත්හදා බලන්න. ඉදිරියේදී තවත් කේතන රහස් බෙදාගැනීමට අපි සූදානම්!