LeetCode වෙබ් අඩවියේ දෛනික ප්රශ්නවලට සටහන් තබන LeetCode Journal එකේ පළමු ලිපිය මෙන්න. අද අපි බලන ප්රශ්නය නම් 1512 – Number of Good Pairs ය. ගූඩ් පේයර් කියන්නේ එකම අගයක් ඇති දෙකක්, ඒත් i < j වශයෙන් අනුක්රමිකව සිටිනවා නම්. මෙම ගණන ගණනය කිරීමේ ක්රම දෙකක් මෙහි විස්තර කරලා.
පළමු ක්රමය – නිරුද්ධ (brute‑force) පිළිවෙල
ඉලක්කම් පටලැවීමේ අඩවිය පුරා සෑම ඉලක්කමක් එක්කත් සෑම අන් ඉලක්කමක් එක්කත් සසඳා, අගය එකක් නම් හා i < j නම් ගණන එකතු කරනවා. කේත උදාහරණය මෙහෙමයි:
- දෝෂයක් නැතිව
for iසහfor jලූප් දෙකක් යොදා ගත හැකිය. - එතැන්පත්
O(n²)කාල සංකීර්ණතාවයක් ඇතිවෙයි. - අතුරුගත ඉඩකඩ
O(1)පමණයි.
මෙම ක්රමය වැඩි ප්රමාණයක් දත්ත තිබුනොත් බරපතල වේග අඩුකමක් ඇති කරයි.
දෙවන ක්රමය – HashMap භාවිතා කර O(n) විසඳුම
ඔබට එක් එක් අගයක් කී වරක් පැමිණියේදැයි ගණනය කර, නව පැමිණීමක් ඇති වෙලාවට එම ගණනට එකතු කරමින් ගූඩ් පේයර් ගණන වැඩි කරගත හැකිය. මෙහි ප්රධාන අදහස වන්නේ, අගයක් k වරක් පෙනේ නම්, ඊළඟ පැමිණීමෙන් k නව ගූඩ් පේයර් එකතු වේ.
- HashMap එකක
key = අගය, value = පැමිණීම් ගණනගබඩා කරයි. - අලුත් අගයක් ලැබුනොත්,
result += map.getOrDefault(num,0)ලෙස ගූඩ් පේයර් එකතු කරයි. - කාල සංකීර්ණතාවය
O(n)වෙයි, අමතර ඉඩකඩO(n)වේ.
මෙම ක්රමය වැඩි දත්ත සෙට් වලදී කාලය ගණනාවකට ඉතිරි කරයි, ඒත් තරමක් මතක භාවිතයක් අවශ්ය වේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තරුණ සංවර්ධකයන්, විශ්වවිද්යාල සිසුන් සහ තාක්ෂණික ව්යාපාර සඳහා මේ අලුත් ක්රමය විශාල ප්රයෝජන දක්වයි:
- කේත ලේඛන කුසලතා වර්ධනය: O(n) ඇල්ගොරිතමක් භාවිතා කරමින් ප්රශ්න විසඳුම් වේගවත් කරගැනීම, ඉගෙනුම් වේගය ඉහළ දැමීමට උපකාරී.
- කැරැව්යකාරී තරුණ ව්යාපාර: සංකීර්ණ ගණිත ගැටලු ඉක්මනින් විසඳා, නිෂ්පාදන සංවර්ධනයේ කාල සීමා කෙටි කරයි.
- ඉලෙක්ට්රොනික පරිසරය: HashMap වැනි දත්ත සංරචනා භාවිතය ඉගෙනීම, දේශීය සොෆ්ට්වේර් ඉංජිනේරුවන්ට ජාත්යන්තර මට්ටමේ කුසලතා ලබාදේ.
ඉදිරියට, මේ වගේ ප්රායෝගික උදාහරණවලින් ශ්රී ලංකාවේ තාක්ෂණික පද්ධතියට නව සුවිශේෂී දෘශ්යයක් ලබාදීමට අපේක්ෂා කරමු.
ඔබත් LeetCode ගවේෂණය කරමින්, මේ වගේ කාර්යක්ෂම ඇල්ගොරිතම් ඔබේ පෞද්ගලික සහ වෘත්තීය කාර්යයන්ට අදාළ කරගන්න. අනාගතයේ තවත් කේත අභියෝග සඳහා සූදානම් වෙන්න!