පටුන[සඟවන්න][පෙන්වන්න]
- 1. ඔබ Array එකක් නිර්වචනය කරන්නේ කෙසේද?
- 2. ගතික අරා: ඒවා මොනවාද? මූලික අරා වලින් ඒවා වෙන් කරන්නේ කුමක් ද?
- 3. අරාවක් සහ ශබ්ද කෝෂයක් එකිනෙකට වෙනස් වන්නේ කෙසේද?
- 4. අරා වල වාසි සහ අවාසි කිහිපයක් ලැයිස්තුගත කරන්න.
- 5. "Sparse Array" යන්නෙන් අදහස් කරන්නේ කුමක්ද?
- 6. ඔබ අරාවකට වඩා සම්බන්ධිත ලැයිස්තුවක් තෝරා ගන්නේ කවදාද?
- 7. සුචිගත අරාවක් ආශ්රිත අරාවකින් වෙන්කර හඳුනා ගන්නේ කුමක් ද?
- 8. වර්ග කළ අරාවලට වඩා Heap සතුව ඇති වාසි මොනවාද?
- 9. අපට අරාවේ ප්රමාණය ඍණ ලෙස අර්ථ දැක්විය හැකිද?
- 10. මූලද්රව්ය 1 සිට 100 දක්වා අරාවක අතුරුදහන් වූ පූර්ණ සංඛ්යාව ඔබ සොයා ගන්නේ කෙසේද?
- 11. ඔබ අරාවක මූලද්රව්යයක දර්ශකය සොයා ගන්නේ කෙසේද?
- 12. ඔබට අරාවකින් නිශ්චිත මූලද්රව්යයක් ඉවත් කළ හැක්කේ කෙසේද?
- 13. අරා දෙකක සමානාත්මතාවය සත්යාපනය කරන්නේ කෙසේද?
- 14. අපි අරාවන් ගැන සාකච්ඡා කරන විට, "මානය" සහ "උපසිද්ධිය" යන වාක්ය ඛණ්ඩවලින් ඔබ අදහස් කරන්නේ කුමක්ද?
- සම්මුඛ පරීක්ෂණ ප්රශ්න කේතනය කිරීම
- 15. නිශ්චිත එකතුවක් ඇති අරාවක යුගලයක් සොයන්න
- 16. රේඛීය කාලය සමඟ ද්විමය අරාව වර්ග කිරීම
- 17. අරාවක විශාලතම ඉන්ට් දෙකේ නිෂ්පාදනය සොයන්න.
- 18. අරාවේ සියලුම බිංදු අවසානයට මාරු කරන්නේ කෙසේද
- 19. එක් මෙහෙයුමකදී මාරු කරන ලද ඇතුළත් කිරීම් දෙකක් සහිත අරාවක් වර්ග කරන්නේ කෙසේද.
- 20. ස්ථානගත කරන ලද අරා දෙකක් ඒකාබද්ධ කරන්නේ කෙසේද.
- 21. ඉහළ සහ පහත් ස්ථාන මාරුවෙන් මාරුවට අයිතම මාලාවක් නැවත ඇණවුම් කරන්නේ කෙසේද?
- 22. අරාවක එක් එක් මූලද්රව්ය අරාවේ එක් එක් මූලද්රව්යයේ ගුණිතය සමඟ බෙදීමේ ක්රියාකරු භාවිතා නොකර ආදේශ කරන්නේ කෙසේද?
- 23. ලඝුගණක වේලාවෙන් අරාවක ඇති අමුතුම මූලද්රව්යය සොයන්න
- 24. වෘත්තාකාර අරාවක එක් එක් මූලද්රව්ය සඳහා පසුව ඇති විශාල මූලද්රව්යය ලබා ගන්නේ කෙසේද?
- 25. අරාවක ප්රතිලෝම ගණන සොයන්නද?
- 26. වැසි ජලය අල්ලා ගැනීමේ ගැටලුව කුමක්ද?
- නිගමනය
කේතීකරණ සම්මුඛ සාකච්ඡා වල DSA ප්රශ්න මාලාවක් අඩංගු වේ. ඔබ FAANG හෝ වෙනත් Tier-1 තාක්ෂණික ව්යාපාරයක් සමඟ ඔබේ ඉදිරි තාක්ෂණික සම්මුඛ පරීක්ෂණය සඳහා සූදානම් වන්නේ නම්, ඔබ අරා සමඟ නිපුණ විය යුතුය.
බොහෝ කේතීකරණ සම්මුඛ සාකච්ඡා වලදී, එය Strings වෙත දෙවන ස්ථානයට පැමිණේ. අරාවක් යනු මතකයේ එකකට සමීපව තබා ඇති අදාළ දත්ත මූලද්රව්ය සමූහයකි.
ඒවා C, C++, Java, Python, Perl සහ Ruby වැනි සියලුම ක්රමලේඛන භාෂාවන්ට සම්බන්ධ වී ඇති බැවින්, ඒවා සෑම තැනකම පවතී. සමහර පුහුණු කේතීකරණ අභියෝග සහ අරාව මත පදනම් වූ සම්මුඛ පරීක්ෂණ ප්රශ්න සහ පිළිතුරු සඳහා කියවීම දිගටම කරගෙන යන්න.
Python භාවිතා කිරීමට සරල, තේරුම් ගැනීමට සහ අප බොහෝ දෙනෙකුට හුරුපුරුදු විය යුතු නිසා කේතීකරණ ගැටළු විසඳීම සඳහා මෙම පෝස්ටුවෙහි Python භාවිතා කරනු ඇත.
අපි පටන් ගනිමු.
1. ඔබ Array එකක් නිර්වචනය කරන්නේ කෙසේද?
- අදාළ දත්ත වර්ග සමූහයක් අරාවකි.
- Arrays සෑම විටම ස්ථාවර වේ.
- එකම ආකාරයේ විචල්යයක් array objects මගින් ස්ථාන කිහිපයක ගබඩා කර ඇත.
- ප්රාථමික වර්ග සහ වස්තු යොමු දෙකම එයට අනුකූල වේ.
2. ගතික අරා: ඒවා මොනවාද? මූලික අරා වලින් ඒවා වෙන් කරන්නේ කුමක් ද?
ගතික අරා (වර්ධනය කළ හැකි අරා, ප්රමාණය වෙනස් කළ හැකි අරා, වෙනස් කළ හැකි අරා හෝ ජාවාහි අරා ලැයිස්තු ලෙසද හැඳින්වේ) සපයන ස්වයංක්රීය පරිමාණය සැලකිය යුතු වාසියකි.
අරාවලට ස්ථාවර ප්රමාණයක් ඇති බැවින් ඔබේ අරාව කලින් ගබඩා කරන්නේ කොපමණ මූලද්රව්යදැයි ඔබ සැම විටම දැන සිටිය යුතුය. අනෙක් අතට, ගතික අරාවක්, ඔබ එයට අමතර සාමාජිකයින් එකතු කරන විට වර්ධනය වේ, එබැවින් ඔබට එහි නියම ප්රමාණය කලින් දැන ගැනීමට අවශ්ය නොවේ.
3. අරාවක් සහ ශබ්ද කෝෂයක් එකිනෙකට වෙනස් වන්නේ කෙසේද?
මෙය නිතිපතා අසනු ලබන සම්මුඛ පරීක්ෂණ ප්රශ්න මාලාවක් වන මූලික කරුණු මත පදනම් වේ. අරා සහ ශබ්දකෝෂ අතර ඇති ප්රධාන වෙනස්කම් පහත දැක්වේ:
- අරාවක් යනු සමාන අයිතමවල ඇණවුම් කළ ලැයිස්තුවකි. අනෙක් අතට, ශබ්දකෝෂයේ යතුරු-අගය යුගල ඇත.
- අරා ප්රමාණය ගතිකව වෙනස් විය හැක. එවැනි ගතික අදහස් ශබ්දකෝෂවල නොමැත.
- අරාවක් භාවිතා කිරීමට පෙර, එහි විශාලත්වය නියම කළ යුතුය. ශබ්ද කෝෂ ප්රමාණය අභිරුචිකරණය කිරීමට අවශ්ය නොවේ.
- ඔබට අරාවේ ප්රමාණය පුළුල් කිරීමට අවශ්ය නම් Redim ප්රකාශය භාවිතා කරන්න. ශබ්ද කෝෂ වල, ප්රකාශනයකින් තොරව මූලද්රව්යයක් එකතු කළ හැකිය.
4. අරා වල වාසි සහ අවාසි කිහිපයක් ලැයිස්තුගත කරන්න.
වාසි:
- Arrays හට එකවර මූලද්රව්ය ගණනාවක් වර්ග කළ හැක.
- වෙනත් දත්ත ව්යුහයන්, අට්ටි, පෝලිම්, සම්බන්ධිත ලැයිස්තු, ගස්, ප්රස්තාර, යනාදී ලෙස, අරාවක් තුළ ක්රියාත්මක කළ හැක.
- අරාවක මූලද්රව්යයක් වෙත ළඟා වීමට දර්ශකයක් භාවිතා කළ හැක.
අවාසි:
- අරාවක ප්රමාණය කලින් ප්රකාශ කළ යුතුය. කෙසේ වෙතත්, අරාව ප්රකාශ කිරීමේ මොහොතේදී, අපට අවශ්ය ප්රමාණය පිළිබඳව අප නොදැන සිටිය හැක.
- අරාවේ ව්යුහය ස්ථිතික වේ. එය අරාවේ ප්රමාණය සැමවිටම ස්ථාවර බවත් මතක වෙන් කිරීම වැඩි කිරීමට හෝ අඩු කිරීමට නොහැකි බවත් ගම්ය වේ.
5. "Sparse Array" යන්නෙන් අදහස් කරන්නේ කුමක්ද?
විරල අරාවක් යනු ශුන්ය අගයන් සහිත ඇතුළත් කිරීම් රාශියක් ඇති දත්ත අරාවකි. ඊට ප්රතිවිරුද්ධව, ඝන අරාවක ශුන්ය නොවන අගයන් සහිත එහි අයිතමවලින් බහුතරයක් අඩංගු වේ. සංඛ්යා වස්තු බවට පරිවර්තනය කරන විරල අරාවක දර්ශක, හිඩැස් ඇතුළත් විය හැක. HashMap හා සසඳන විට, ඒවා මතකය කාර්යක්ෂම වේ.
6. ඔබ අරාවකට වඩා සම්බන්ධිත ලැයිස්තුවක් තෝරා ගන්නේ කවදාද?
අරා වෙනුවට සම්බන්ධිත ලැයිස්තු භාවිතා කරන විට, සලකා බලන්න:
- අහඹු ප්රවේශය ලබා ගැනීමට ඔබට කිසිදු මූලද්රව්යයක් අවශ්ය නොවේ.
- තාවකාලික පුරෝකථනය කිරීම අත්යවශ්ය වන විට, ඔබට නියත කාල ඇතුළත් කිරීම් සහ ලැයිස්තුවෙන් ඉවත් කිරීම් අවශ්ය වේ.
- ප්රමුඛතා පෝලිමක් නිර්මාණය කිරීම සඳහා, ඔබට ලැයිස්තුවේ මධ්යයේ අයිතම තැබීමට අවශ්ය විය හැකිය.
- ලැයිස්තුව කොපමණ කාලයක් පවතිනු ඇත්දැයි ඔබට අදහසක් නැත. අරා ප්රමාණය ඉහළ ගියහොත්, ඔබ සරල අරාවන් මෙන් මතකය නැවත ප්රකාශ කර අනුපිටපත් කළ යුතුය.
7. සුචිගත අරාවක් ආශ්රිත අරාවකින් වෙන්කර හඳුනා ගන්නේ කුමක් ද?
ආශ්රිත සහ සුචිගත අරා අතර මූලික වෙනස්කම් පහත වගුවේ දක්වා ඇත.
- ආශ්රිත අරාවක් වර්ග කිරීමට පෙළ හෝ සංඛ්යාත්මක ආකෘතියේ යතුරු-අගය යුගලයක් භාවිතා කරයි. සුචිගත කළ අරාවේ යතුරු සියල්ලම සංඛ්යාත්මක වන අතර සෑම යතුරක්ම වෙනස් අගයකට සම්බන්ධ වේ.
- ආශ්රිත අරාවක, යතුර තන්තුවක් විය හැක. 0 සිට ආරම්භ වන පූර්ණ සංඛ්යා යතුරු සහිත සුචිගත අරාව.
- තීරු දෙකක වගුවක් ආශ්රිත අරාවක හැසිරීම අනුකරණය කරයි. තනි තීරු වගුවකට සමාන වන්නේ සුචිගත අරා වේ.
- සිතියම් යනු ආශ්රිත අරා වර්ගයකි. දර්ශක අරාවක් යනු සිතියමක් නොවේ.
8. වර්ග කළ අරාවලට වඩා Heap සතුව ඇති වාසි මොනවාද?
Sorted Arrays මත Heap භාවිතා කිරීමේ කාල කාර්යක්ෂමතාවය ප්රධාන වාසියයි. ගොඩවල් මෙහෙයුම් වේගවත් වන අතර, අරාවක් වර්ග කිරීම සඳහා බොහෝ කාලයක් අවශ්ය වේ. ගොඩකට කුඩාම මූලද්රව්යය අරාවකට වර්ග කිරීමට වඩා සැලකිය යුතු ඉක්මනින් සොයා ගත හැක.
ලබා දී ඇති සංඛ්යා එකතුවක් වර්ග කළ අරා භාවිතයෙන් ක්රම දෙකකින් එකකට සකස් කළ හැක. අනෙක් අතට, දී ඇති සංඛ්යා එකතුවක් සඳහා, විභව ගොඩවල් එකකට වඩා තිබිය හැක.
9. අපට අරාවේ ප්රමාණය ඍණ ලෙස අර්ථ දැක්විය හැකිද?
නැත, අපට සෘණ පූර්ණ සංඛ්යාවක් අරාවක ප්රමාණය ලෙස අර්ථ දැක්විය නොහැක. අපි ප්රකාශ කළහොත් සම්පාදන-කාල දෝෂයක් ඇති නොවේ. කෙසේ වෙතත්, ධාවන වේලාවේදී, අපට NegativeArraySizeException හමුවනු ඇත.
10. මූලද්රව්ය 1 සිට 100 දක්වා අරාවක අතුරුදහන් වූ පූර්ණ සංඛ්යාව ඔබ සොයා ගන්නේ කෙසේද?
පහත ශ්රිතය යෙදීමෙන් ශ්රේණියේ එකතුව ගණනය කළ හැක: n (n + 1) / 2
අරාවෙහි අනුපිටපත් නොමැති නම් හෝ නිඛිල එකකට වඩා අස්ථානගත වී ඇත්නම් පමණක් මෙම ශ්රිතය ක්රියාත්මක වේ. අරාවක අනුපිටපත් මූලද්රව්ය තිබේද, ඔබට සමාන මූලද්රව්ය තිබේදැයි බැලීමට අරාව වර්ග කළ හැක.
11. ඔබ අරාවක මූලද්රව්යයක දර්ශකය සොයා ගන්නේ කෙසේද?
මූලද්රව්යයක දර්ශකය රේඛීය හෝ ද්විමය සෙවුමක් හරහා සොයා ගත හැක. එය අවශ්ය මූලද්රව්යයේ ගැළපීම සොයා ගන්නා තෙක්, රේඛීය සෙවුම් ශ්රිතයක් අරාවක එක් එක් මූලද්රව්ය මත ලූප වේ. එය ගැලපෙන මූලද්රව්යය ස්ථානගත කළ පසු එය දර්ශකය ආපසු ලබා දෙයි. එහි ප්රතිඵලයක් වශයෙන්, රේඛීය සෙවුමේ තාවකාලික සංකීර්ණත්වය O. (n) වේ. වර්ග කළ සහ නොකල අරාවකට රේඛීය සෙවුමක් භාවිතා කළ හැක.
ද්විමය සෙවුමක් භාවිතා කරමින්, අන්තරයේ මධ්යස්ථය අවශ්ය මූලද්රව්යයට ගැලපෙන තෙක් අරාව අඩකින් අඛණ්ඩව බෙදන අතර, අරාව වර්ග කර ඇත්නම් ඔබට මූලද්රව්යයේ දර්ශකය ලබා ගත හැක. ප්රතිඵලයක් වශයෙන්, ද්විමය සෙවුමේ තාවකාලික සංකීර්ණත්වය O. (log n) වේ.
12. ඔබට අරාවකින් නිශ්චිත මූලද්රව්යයක් ඉවත් කළ හැක්කේ කෙසේද?
ඔබට මුල් අරාවෙන් මූලද්රව්ය සරලව මකා දැමිය නොහැකි බැවින් ඒවා නිශ්චිත ප්රමාණයකින් සවි කර ඇති බැවින්, සම්මුඛ පරීක්ෂකවරයා ඔබට වෙනස් ප්රවේශයක් යෝජනා කිරීමට සහ ප්රශ්නය මතු කරන ගැටලුව සමඟ කටයුතු කිරීමට බලාපොරොත්තු වේ. හොඳම ක්රියාමාර්ගය වන්නේ මූලද්රව්යයක් මකා දැමීම සඳහා නව අරාවක් සෑදීමයි. ඔබට මෙම අරාවේ පළමු අරාවෙන් මූලද්රව්ය අනුපිටපත් කළ හැකි අතර ඔබ මැකීමට බලාපොරොත්තු වන මූලද්රව්යය පමණක් ඇතුළත් කරන්න.
තවත් උපාය මාර්ගයක් වන්නේ අරාවේ ඉලක්ක මූලද්රව්යය සොයා ගැනීම සහ ඉලක්ක මූලද්රව්යයේ දකුණට ඇති සියලුම අයිතමවල අනුපිළිවෙල ආපසු හැරවීමයි.
13. අරා දෙකක සමානාත්මතාවය සත්යාපනය කරන්නේ කෙසේද?
ඔබ මුලින්ම සපයා ඇති අරා දෙකේ දිග සත්යාපනය කළ යුතුය. අරා දෙකේම ගැළපෙන අයිතම ඒවායේ දිග සමාන වන විට සංසන්දනය කෙරේ. අරා දෙක සමාන ලෙස සලකනු ලැබේ. සෑම ලිපි හුවමාරුවකම සෑම සංරචක යුගලයක්ම සමාන නම්. අරා ප්රමාණයෙන් විශාල නම් අරා දෙකක සමානාත්මතාවය පරීක්ෂා කිරීමට මෙම ප්රවේශය උපදෙස් දෙන්නේ නැත, මන්ද එයට බොහෝ කාලයක් ගතවනු ඇත. ඔබට Arrays පන්තියේ ඇතුළත් වන equals() ක්රමයද භාවිතා කළ හැක, කෙසේ වෙතත්, සම්මුඛ පරීක්ෂක විසින් ඔබෙන් ගොඩනඟන ලද ක්රම භාවිතා නොකර අරා දෙකක් සංසන්දනය කරන ලෙස ඉල්ලා සිටින්නේ නම්, මෙම ක්රමය ප්රයෝජනවත් වනු ඇත.
14. අපි අරාවන් ගැන සාකච්ඡා කරන විට, "මානය" සහ "උපසිද්ධිය" යන වාක්ය ඛණ්ඩවලින් ඔබ අදහස් කරන්නේ කුමක්ද?
අරාවක “මානය” යනු එක් එක් සාමාජිකයා හඳුනා ගැනීමට අවශ්ය දර්ශක ගණන හෝ උපසිරසි ගණනයි. උපසිරැසි සහ මානයන් අපැහැදිලි විය හැක. මානයක් යනු අවසර ලත් යතුරු පරාසයේ විස්තරයක් වන අතර, උපක්රම යනු අංකයකි. එක් එක් අරා මානයන් සඳහා අවශ්ය වන්නේ එක් ග්රාහකත්වයක් පමණි.
උදාහරණයක් ලෙස, array arr[10][5] හට මාන දෙකක් ඇත. එකක ප්රමාණය 10 සහ අනෙක 5. එහි සංරචක ආමන්ත්රණය කිරීමට, ඔබට ග්රාහකත්ව දෙකක් අවශ්ය වේ. දෙකම 0 සහ 4 අතර වේ; 0 සහ 9 අතර එකක්, ඇතුළුව.
සම්මුඛ පරීක්ෂණ ප්රශ්න කේතනය කිරීම
15. නිශ්චිත එකතුවක් ඇති අරාවක යුගලයක් සොයන්න
උදාහරණ වශයෙන්,
ආදානය:
- අංක = [8, 7, 2, 5, 3, 1]
- ඉලක්කය = 10
ප්රතිදාන:
- යුගල හමු විය (8, 2)
- Or
- යුගල හමු විය (7, 3)
ආදානය:
- අංක = [5, 2, 6, 8, 1, 9]
- ඉලක්කය = 12
ප්රතිදාන:
- යුගල හමු නොවීය
16. රේඛීය කාලය සමඟ ද්විමය අරාව වර්ග කිරීම
ද්විමය අරාවක් රේඛීය වේලාවෙන් සහ ස්ථාවර ප්රදේශයක වර්ග කරන්න. ප්රතිදානය පළමුව සියලුම බිංදු පෙන්විය යුතුය, පසුව සියල්ල පෙන්විය යුතුය.
උදාහරණ වශයෙන්,
- ආදානය: { 1, 0, 1, 0, 1, 0, 0, 1 }
- ප්රතිදානය: { 0, 0, 0, 0, 1, 1, 1, 1 }
සරල ප්රවේශයක් වනුයේ අරාවේ මුළු 0s සංඛ්යාව ගණනය කිරීමයි, k කියන්න, ඉන්පසු අරාවේ පළමු k දර්ශක 0s සහ ඉතිරි දර්ශක 1 න් පුරවන්න. විකල්පයක් ලෙස, අපට ගණනය කළ හැක. array k, අරාවේ අවසාන k දර්ශක 1 න් පුරවන්න, සහ ඉතිරි දර්ශක 1 න් පුරවන්න.
ලබා දී ඇති ප්රවේශයට O(n) කාල සංකීර්ණතාවයක් ඇති අතර අමතර ගබඩාවක් භාවිතා නොකරයි, මෙහි n යනු ආදානයේ ප්රමාණය වේ.
17. අරාවක විශාලතම ඉන්ට් දෙකේ නිෂ්පාදනය සොයන්න.
නිඛිල අරාවක සංඛ්යා දෙකක විශාලතම නිෂ්පාදනය සොයන්න.
උදාහරණයක් ලෙස 10 3 5 6 2 අරාව ගැන සිතන්න. (-10, -3) හෝ (5, 6) යුගලය ඉහළම නිෂ්පාදනය වේ.
සෑම මූලද්රව්ය සංයෝජනයක් ගැනම සිතීම සහ ඒවායේ නිෂ්පාදනය හඳුනා ගැනීම මෝඩ ප්රවේශයකි. වත්මන් යුගලයේ නිෂ්පාදිතය මෙතෙක් ලබාගත් උපරිම නිෂ්පාදනයට වඩා විශාල නම්, උපරිම නිෂ්පාදනය යාවත්කාලීන කරන්න. අවසාන නිෂ්පාදනයේ සංරචක අවසන් වරට මුද්රණය කරන්න.
ඉහත විසඳුම, n යනු ආදාන ප්රමාණය වන අතර, O(n2) හි කාල සංකීර්ණතාවයක් ඇති අතර තවත් ඉඩක් නොගනී.
18. අරාවේ සියලුම බිංදු අවසානයට මාරු කරන්නේ කෙසේද
නිඛිල අරාවක ඇති සියලුම බිංදු අවසානය දක්වා ගෙන යන්න. පිළිතුර නියත ඉඩ භාවිතා කිරීමෙන් වැළකිය යුතු අතර අරාවේ සංරචකවල සාපේක්ෂ අනුපිළිවෙල ආරක්ෂා කළ යුතුය.
ආදානය: 1,2,3,0,8,0,4,7 XNUMX}
ප්රතිදානය {1,2,3,8,4,7,0,0} වනු ඇත
වත්මන් මූලද්රව්යය ශුන්ය නොවේ නම්, මූලද්රව්යය අරාවෙහි පහත පවතින ස්ථානයේ තබන්න. අරාවේ අයිතම සියල්ල සැකසූ පසු ඉතිරි සියලුම දර්ශක 0 න් පුරවන්න.
පෙර විසඳුමට O(n) කාල සංකීර්ණතාවයක් ඇත, මෙහි n යනු ආදානයේ ප්රමාණය වේ.
19. එක් මෙහෙයුමකදී මාරු කරන ලද ඇතුළත් කිරීම් දෙකක් සහිත අරාවක් වර්ග කරන්නේ කෙසේද.
මාරු කරන ලද අයිතම දෙකක් සහ ආරෝහණ අනුපිළිවෙලට සකස් කර ඇති සියලුම මූලද්රව්ය සහිත අරාවක් ලබා දී ඇති රේඛීය වේලාවට අරාවක් වර්ග කරන්න. අරාවෙහි අනුපිටපත් නොමැති බව මවාපාන්න.
ආදානය:= [1,9,3,4,7,2] හෝ [9,3,7,2,1,4] හෝ [2,4,1,7,3,9]
ප්රතිදානය: = [1,2,3,4,7,9]
අරාවේ දෙවන මූලද්රව්යයෙන් පටන් ගෙන, පරමාර්ථය වන්නේ එක් එක් මූලද්රව්ය එහි පූර්වගාමියාට සංසන්දනය කිරීමයි. ආරවුලේ පිහිටීම x සහ y යන දර්ශක දෙකක් ලබා ගැනීමෙන් ගබඩා කර ඇත.
x පෙර මූලද්රව්යයේ දර්ශකයට සහ y වත්මන් මූලද්රව්යයේ දර්ශකයට යාවත්කාලීන කරන්න, කලින් එක දෙවැන්නට වඩා විශාල නම්. පෙර මූලද්රව්ය වත්මන් මූලද්රව්යයට වඩා වැඩි බව පෙනී ගියහොත් වත්මන් මූලද්රව්යයේ දර්ශකයට y යාවත්කාලීන කරන්න.
අවසාන වශයෙන්, අපි එක් එක් යාබද මූලද්රව්ය යුගල සැකසීම අවසන් කළ පසු x සහ y දර්ශකවල ඇති මූලද්රව්ය මාරු කරන්න.
ඉහත සඳහන් කළ ක්රමය n ප්රමාණයේ ආදාන අරාවේ තනි ස්කෑන් කිරීමක් පමණක් සිදු කරන නිසා, එහි කාල සංකීර්ණතාව O(n) වේ. විසඳුම සඳහා අමතර කාමරයක් අවශ්ය නොවේ.
20. ස්ථානගත කරන ලද අරා දෙකක් ඒකාබද්ධ කරන්නේ කෙසේද.
වර්ග කළ අනුපිළිවෙල රඳවා තබා ගැනීමෙන්, එනම්, පළමු m කුඩාම මූලද්රව්යවලින් X[] පිරවීමෙන් සහ Y[] පිරවීමෙන් - m සහ n ප්රමාණයේ වර්ග කළ අරා දෙකේ X[] සහ Y[] අයිතම ඒකාබද්ධ කරන්න. ඉතිරි මූලද්රව්ය.
X[] අරාවෙහි මූලද්රව්යයක් දැනටමත් නිවැරදි ස්ථානයේ තිබේ නම් (එනම්, ඉතිරි මූලද්රව්ය අතරින් කුඩාම එක), එය නොසලකා හරින්න; එසේ නොමැති නම්, එය කුඩාම මූලද්රව්ය සමඟ ප්රතිස්ථාපනය කරන්න, එය Y[] හි පළමු සාමාජිකයා ද වේ. හුවමාරු කිරීමෙන් පසු අනුපිළිවෙල තබා ගැනීමට, මූලද්රව්යය (දැන් Y[0] හි) Y[] හි නිසි ස්ථානයට මාරු කරන්න.
පළමු අරාවේ ප්රමාණය m වන අතර දෙවන අරාවේ ප්රමාණය n වන අතර කාල සංකීර්ණතාවය O(mn) වේ.
21. ඉහළ සහ පහත් ස්ථාන මාරුවෙන් මාරුවට අයිතම මාලාවක් නැවත ඇණවුම් කරන්නේ කෙසේද?
එක් එක් ඊළඟ සාමාජිකයා පෙර සහ පහත මූලද්රව්යවලට වඩා විශාල වන පරිදි පූර්ණ සංඛ්යා අරාවක් නැවත සකස් කරන්න. අරාවෙහි අනුපිටපත් මූලද්රව්ය කිසිවක් ඇතුළත් නොවන බව උපකල්පනය කරන්න.
ඵලදායී ප්රවේශයක් සඳහා අරාව වර්ග කිරීම හෝ අතිරේක ඉඩක් භාවිතා කිරීම අවශ්ය නොවේ. සැලැස්ම, ආරම්භ කිරීමට, අරාවේ දෙවන සාමාජිකයා සහ එක් එක් ලූප පුනරාවර්තනය සඳහා දෙදෙනෙකු බැගින් ඉහළ යාමයි.
අවසාන මූලද්රව්යය පළමු එක ඉක්මවන්නේ නම් සංරචක මාරු කරන්න. සමාන නහරයකින්, පහත මූලද්රව්යය වත්මන් මූලද්රව්යයට වඩා විශාල නම් අයිතම දෙකම මාරු කරන්න. ලූපය අවසානයේ දී නිශ්චිත සීමාවන්ට අනුකූල වන අපේක්ෂිත අරාව අපි ලබා ගනිමු.
22. අරාවක එක් එක් මූලද්රව්ය අරාවේ එක් එක් මූලද්රව්යයේ ගුණිතය සමඟ බෙදීමේ ක්රියාකරු භාවිතා නොකර ආදේශ කරන්නේ කෙසේද?
බෙදීම් ක්රියාකරු භාවිතා නොකර, එක් එක් මූලද්රව්ය නිඛිල අරාවක අනෙක් සියලුම මූලද්රව්යවල ගුණිතය සමඟ ප්රතිස්ථාපනය කරන්න.
රේඛීය කාලය සහ නියත අවකාශය තුළ, අපට මෙම ගැටළුව විසඳීම සඳහා පුනරාවර්තනය භාවිතා කළ හැකිය. දකුණු subarray හි එක් එක් මූලද්රව්යයේ නිෂ්පාදන ප්රත්යාවර්තීව ගණනය කිරීම සහ වම් subarray නිෂ්පාදනය ශ්රිත පරාමිති ලෙස සම්මත කිරීම සංකල්පයයි.
කාල සංකීර්ණත්වය O(n) වේ.
23. ලඝුගණක වේලාවෙන් අරාවක ඇති අමුතුම මූලද්රව්යය සොයන්න
එක් සාමාජිකයෙකුට හැර අනෙක් සියල්ලන්ටම ඉරට්ටේ සිදුවීම් සංඛ්යාවක් ඇති පූර්ණ සංඛ්යා අරාවක් ලබා දී ඇති අතර, ගැටළුව වන්නේ මෙම එක් මූලද්රව්ය කොපමණ වාර ගණනක් දිස් වේද යන්න තීරණය කිරීමයි. අරාව තුළ එකම මූලද්රව්ය යුගල වශයෙන් සිදුවේ නම් සහ පේළියක දී ඇති මූලද්රව්යයක අවස්ථා දෙකකට වඩා කිසිවිටෙක තිබිය නොහැකි නම් ලඝුගණක කාලය සහ නියත අවකාශයේ ඔත්තේ සිදුවන මූලද්රව්යය සොයන්න.
XOR මෙහෙයුම මඟින් මෙම ගැටලුව රේඛීය වේලාවේදී විසඳා ගැනීමට අපට හැකියාව ලැබේ. ඉලක්කය වන්නේ අරාවේ සෑම අංගයක්ම XOR කිරීමයි. ඉරට්ටේ ඇති වන මූලද්රව්ය එකිනෙක අවලංගු වූ පසු ඉතිරි වන්නේ ඔත්තේ සිදුවන මූලද්රව්ය පමණි.
මෙම ගැටළුව O(log(n)) කාලය තුළ පවා විසඳිය හැක.
24. වෘත්තාකාර අරාවක එක් එක් මූලද්රව්ය සඳහා පසුව ඇති විශාල මූලද්රව්යය ලබා ගන්නේ කෙසේද?
වෘත්තාකාර නිඛිල අරාවක එක් එක් මූලද්රව්ය සඳහා ඊළඟ විශාල මූලද්රව්යය ස්ථානගත කළ යුතුය. අරාවේ x මූලද්රව්යයකට පසුව ඇති පළමු විශාල පූර්ණ සංඛ්යාව එම මූලද්රව්යයේ පසුව ඇති විශාල මූලද්රව්යය වේ.
දකුණේ සිට වමට, අපට අරා අයිතම මත ක්රියා කළ හැක. ඉලක්කය වන්නේ එක් එක් මූලද්රව්ය x සඳහා ලූප් කිරීම එක්කෝ ස්ටැක් හිස් වන තුරු හෝ අපට ඊට ඉහළින් ඉහළ මූලද්රව්යයක් ඇති වන තුරුය. x හි මීළඟ විශාල මූලද්රව්යය සකසන විට එය අට්ටිය මත දිස්වන ලෙස සකසන්න.
25. අරාවක ප්රතිලෝම ගණන සොයන්නද?
අරාවක මුළු ප්රතිලෝම ගණන සොයන්න. I j යුගලයක් I j) සහ (A[i] > A[j]) නම් අරාවක ප්රතිලෝමයක් ලෙස හැඳින්වේ. අපි මේ අරාවේ සෑම යුගලයක්ම ගණන් කළ යුතුයි.
එයට වඩා අඩු සියලුම අරා සාමාජිකයන් එහි දකුණට ගණන් කිරීම සහ ප්රතිඵලය ප්රතිදානයට එකතු කිරීම සරල ප්රවේශයකි.
මෙම විසඳුමට O(n2) සංකීර්ණතාවයක් ඇත, මෙහි n යනු ආදානයේ ප්රමාණයයි.
26. වැසි ජලය අල්ලා ගැනීමේ ගැටලුව කුමක්ද?
එක් ඒකකයක් පළලින් ලබා දී ඇති බාර් කට්ටලයක සිරවිය හැකි වැඩිම ජලය සොයා ගැනීම "උගුල් වැටෙන වර්ෂාපතනය" ලෙස හැඳින්වේ.
ඉලක්කය වන්නේ එක් එක් තීරුවේ වම් සහ දකුණට තැබිය හැකි ඉහළම තීරුව තීරණය කිරීමයි. වමට සහ දකුණට ඇති ප්රමුඛ බාර්වල අවමය, වත්මන් තීරුවේ උසට වඩා අඩුය, එක් එක් තීරුව මත ගබඩා කර ඇති ජල ප්රමාණයයි.
නිගමනය
අනෙකුත් දත්ත ව්යුහ මාතෘකා හා සසඳන විට, අරා සරල වේ. ace array සම්මුඛ පරීක්ෂණ ප්රශ්න සඳහා, ඔබට arrays පිළිබඳ මූලික අවබෝධයක් තිබිය යුතුය.
අරාවේ සම්මුඛ පරීක්ෂණ ප්රශ්නවලට සාර්ථකව පිළිතුරු සැපයීම සඳහා අරාව මෙහෙයුම් (අරාවක් ප්රකාශ කිරීම/නිර්මාණය කිරීමේ සිට අරාව අයිතම වෙත ප්රවේශ වීම/වෙනස් කිරීම දක්වා) මෙන්ම ලූප, පුනරාවර්තනය සහ මූලික ක්රියාකරුවන් වැනි ක්රමලේඛන සංකල්ප ද ඇතුළුව, ඔබ අරාවල පදනම් පුළුල් ලෙස සමාලෝචනය කළ යුතුය. ගැටලුව සම්පූර්ණයෙන්ම හඳුනා ගන්න.
ඔබට කිසියම් විමසීමක් ඇත්නම් පැහැදිලි කිරීමක් ලබා ගත යුතුය. ගැටලුව වඩාත් කළමනාකරණය කළ හැකි කොටස් වලට බෙදීම ගැන සිතන්න. ඔබ ක්රමලේඛනය ආරම්භ කිරීමට පෙර ඇල්ගොරිතම මතක තබා ගන්න; එය ගලා සටහනක ලියා හෝ දෘශ්යමාන කරන්න. ඉන්පසු කේතය ලිවීම ආරම්භ කරන්න.
ඔබමයි