பொருளடக்கம்[மறை][காட்டு]
- 1. வரிசையை எப்படி வரையறுப்பது?
- 2. டைனமிக் வரிசைகள்: அவை என்ன? அடிப்படை வரிசைகளிலிருந்து அவற்றை வேறுபடுத்துவது எது?
- 3. ஒரு வரிசையும் அகராதியும் எப்படி ஒன்றுக்கொன்று வேறுபடுகின்றன?
- 4. வரிசைகளின் சில நன்மைகள் மற்றும் குறைபாடுகளை பட்டியலிடுங்கள்.
- 5. "ஸ்பார்ஸ் அரே" எதைக் குறிக்கிறது?
- 6. அணிவரிசையில் இணைக்கப்பட்ட பட்டியலை எப்போது தேர்வு செய்வீர்கள்?
- 7. அசோசியேட்டிவ் வரிசையிலிருந்து அட்டவணைப்படுத்தப்பட்ட வரிசையை வேறுபடுத்துவது எது?
- 8. வரிசைப்படுத்தப்பட்ட வரிசைகளை விட ஹீப் என்ன நன்மைகளைக் கொண்டுள்ளது?
- 9. வரிசையின் அளவை எதிர்மறையாக வரையறுக்க முடியுமா?
- 10. 1 முதல் 100-உறுப்பு வரிசையில் விடுபட்ட முழு எண்ணை எவ்வாறு கண்டறிவது?
- 11. ஒரு அணிவரிசையில் உள்ள ஒரு தனிமத்தின் குறியீட்டை எவ்வாறு கண்டுபிடிப்பது?
- 12. ஒரு வரிசையிலிருந்து ஒரு குறிப்பிட்ட உறுப்பை எவ்வாறு அகற்றுவது?
- 13. இரண்டு அணிகளின் சமத்துவத்தை எவ்வாறு சரிபார்க்கலாம்?
- 14. நாங்கள் வரிசைகளைப் பற்றி விவாதிக்கும்போது, "பரிமாணம்" மற்றும் "சப்ஸ்கிரிப்ட்" என்ற சொற்றொடர்களால் நீங்கள் எதைக் குறிப்பிடுகிறீர்கள்?
- குறியீட்டு நேர்காணல் கேள்விகள்
- 15. குறிப்பிட்ட தொகையைக் கொண்ட அணிவரிசையில் ஒரு ஜோடியைத் தேடுங்கள்
- 16. நேரியல் நேரத்துடன் பைனரி வரிசை வரிசையாக்கம்
- 17. ஒரு வரிசையில் உள்ள மிகப்பெரிய இரண்டு-இன்ட் தயாரிப்பைக் கண்டறியவும்.
- 18. அணிவரிசையின் பூஜ்ஜியங்கள் அனைத்தையும் முடிவுக்கு மாற்றுவது எப்படி
- 19. ஒரு செயல்பாட்டில் மாற்றப்பட்ட இரண்டு உள்ளீடுகளுடன் ஒரு வரிசையை எவ்வாறு வரிசைப்படுத்துவது.
- 20. இடத்தில் இரண்டு வரிசைப்படுத்தப்பட்ட அணிகளை எவ்வாறு இணைப்பது.
- 21. உயர் மற்றும் குறைந்த நிலைகளை மாறி மாறி உருப்படிகளின் வரிசையை எவ்வாறு மறுவரிசைப்படுத்துவது?
- 22. அணிவரிசையில் உள்ள ஒவ்வொரு தனிமத்தின் பெருக்கத்துடன் ஒரு பிரிவு ஆபரேட்டரைப் பயன்படுத்தாமல், வரிசையின் ஒவ்வொரு உறுப்பையும் எவ்வாறு மாற்றுவது?
- 23. மடக்கை நேரத்தில் ஒரு வரிசையில் உள்ள வித்தியாசமான உறுப்பைக் கண்டறியவும்
- 24. வட்ட வரிசையில் உள்ள ஒவ்வொரு உறுப்புக்கும் அடுத்தடுத்த பெரிய உறுப்பை எவ்வாறு பெறுவது?
- 25. ஒரு அணிவரிசையின் தலைகீழ் எண்ணிக்கையைக் கண்டறிக?
- 26. மழை நீர் பிடிப்பு பிரச்சனை என்றால் என்ன?
- தீர்மானம்
குறியீட்டு நேர்காணல்களில் தொடர்ச்சியான DSA கேள்விகள் உள்ளன. FAANG அல்லது மற்றொரு Tier-1 தொழில்நுட்ப வணிகத்துடன் உங்களின் வரவிருக்கும் தொழில்நுட்ப நேர்காணலுக்கு நீங்கள் தயாராக இருந்தால், நீங்கள் அணிகளில் திறமையானவராக இருக்க வேண்டும்.
பெரும்பாலான குறியீட்டு நேர்காணல்களில், இது சரங்களுக்கு இரண்டாவது இடத்தில் வருகிறது. வரிசை என்பது நினைவகத்தில் ஒன்றுக்கொன்று அருகாமையில் இருக்கும் தொடர்புடைய தரவு கூறுகளின் தொகுப்பாகும்.
அவை C, C++, Java, Python, Perl மற்றும் Ruby போன்ற அனைத்து நிரலாக்க மொழிகளுடனும் இணைக்கப்பட்டுள்ளதால், அவை எல்லா இடங்களிலும் உள்ளன. சில பயிற்சி குறியீட்டு சவால்கள் மற்றும் நேர்காணல் கேள்விகள் மற்றும் வரிசைகளின் அடிப்படையில் பதில்களைத் தொடர்ந்து படிக்கவும்.
இந்த இடுகையில் குறியீட்டு சிக்கல்களைச் சமாளிக்க பைதான் பயன்படுத்தப்படும், ஏனெனில் இது பயன்படுத்த எளிதானது, புரிந்துகொள்வது மற்றும் நம்மில் பெரும்பாலோருக்குத் தெரிந்திருக்க வேண்டும்.
ஆரம்பித்துவிடுவோம்.
1. வரிசையை எப்படி வரையறுப்பது?
- தொடர்புடைய தரவு வகைகளின் குழு ஒரு வரிசை.
- வரிசைகள் எப்போதும் நிலையானவை.
- ஒரே மாதிரியான மாறி பல இடங்களில் வரிசை பொருள்களால் சேமிக்கப்படுகிறது.
- பழமையான வகைகள் மற்றும் பொருள் குறிப்புகள் இரண்டும் அதனுடன் இணக்கமாக உள்ளன.
2. டைனமிக் வரிசைகள்: அவை என்ன? அடிப்படை வரிசைகளிலிருந்து அவற்றை வேறுபடுத்துவது எது?
டைனமிக் வரிசைகள் (வளரக்கூடிய வரிசைகள், மறுஅளவிடக்கூடிய வரிசைகள், மாற்றக்கூடிய வரிசைகள் அல்லது ஜாவாவில் வரிசை பட்டியல்கள் என்றும் குறிப்பிடப்படுகிறது) வழங்கும் தானியங்கி அளவிடுதல் ஒரு குறிப்பிடத்தக்க நன்மையாகும்.
வரிசைகள் ஒரு நிலையான அளவைக் கொண்டிருப்பதால், உங்கள் அணிவரிசை எவ்வளவு கூறுகளை முன்கூட்டியே சேமிக்கும் என்பதை நீங்கள் எப்போதும் அறிந்திருக்க வேண்டும். மறுபுறம், நீங்கள் கூடுதல் உறுப்பினர்களைச் சேர்க்கும்போது மாறும் வரிசை வளர்கிறது, எனவே அதன் சரியான அளவை நீங்கள் முன்பே அறிந்து கொள்ள வேண்டியதில்லை.
3. ஒரு வரிசையும் அகராதியும் எப்படி ஒன்றுக்கொன்று வேறுபடுகின்றன?
இது ஒரு அடிப்படை அடிப்படையிலான நேர்காணல் கேள்விகள், தொடர்ந்து கேட்கப்படும். வரிசைகள் மற்றும் அகராதிகளுக்கு இடையே உள்ள முக்கிய வேறுபாடுகள் பின்வருமாறு:
- வரிசை என்பது ஒத்த உருப்படிகளின் வரிசைப்படுத்தப்பட்ட பட்டியல். அகராதி, மறுபுறம், முக்கிய மதிப்பு ஜோடிகளைக் கொண்டுள்ளது.
- வரிசை அளவுகள் மாறும் வகையில் மாறலாம். இத்தகைய ஆற்றல்மிக்க கருத்துக்கள் அகராதிகளில் இல்லை.
- வரிசையைப் பயன்படுத்துவதற்கு முன், அதன் அளவைக் குறிப்பிட வேண்டும். அகராதி அளவுகள் தனிப்பயனாக்கப்பட வேண்டியதில்லை.
- நீங்கள் வரிசையின் அளவை விரிவாக்க விரும்பினால், Redim அறிக்கையைப் பயன்படுத்தவும். அகராதிகளில், ஒரு உறுப்பை அறிவிப்பு இல்லாமல் சேர்க்கலாம்.
4. வரிசைகளின் சில நன்மைகள் மற்றும் குறைபாடுகளை பட்டியலிடுங்கள்.
நன்மைகள்:
- வரிசைகள் ஒரே நேரத்தில் பல கூறுகளை வரிசைப்படுத்தலாம்.
- பிற தரவு கட்டமைப்புகள், அடுக்குகள், வரிசைகள், இணைக்கப்பட்ட பட்டியல்கள், மரங்கள், வரைபடங்கள் போன்றவற்றை ஒரு வரிசையில் செயல்படுத்தலாம்.
- ஒரு வரிசையின் உறுப்பை அடைய ஒரு குறியீட்டைப் பயன்படுத்தலாம்.
குறைபாடுகள்:
- ஒரு வரிசையின் அளவு முன்கூட்டியே அறிவிக்கப்பட வேண்டும். வரிசை அறிவிப்பு நேரத்தில், நமக்குத் தேவைப்படும் அளவைப் பற்றி நாம் அறிந்திருக்காமல் இருக்கலாம்.
- வரிசையின் அமைப்பு நிலையானது. வரிசை அளவு எப்போதும் நிலையானது மற்றும் நினைவக ஒதுக்கீட்டை அதிகரிக்கவோ குறைக்கவோ முடியாது என்பதை இது குறிக்கிறது.
5. "ஸ்பார்ஸ் அரே" எதைக் குறிக்கிறது?
ஒரு ஸ்பேர்ஸ் வரிசை என்பது பூஜ்ஜிய மதிப்புகள் கொண்ட பல உள்ளீடுகளைக் கொண்ட தரவு வரிசை ஆகும். இதற்கு நேர்மாறாக, அடர்த்தியான வரிசையானது பூஜ்ஜியமற்ற மதிப்புகளுடன் அதன் பெரும்பாலான உருப்படிகளைக் கொண்டுள்ளது. எண்களை பொருள்களாக மாற்றும் ஸ்பேர்ஸ் வரிசையின் குறியீடுகள் இடைவெளிகளை உள்ளடக்கியிருக்கலாம். HashMap உடன் ஒப்பிடும்போது, அவை அதிக நினைவக திறன் கொண்டவை.
6. அணிவரிசையில் இணைக்கப்பட்ட பட்டியலை எப்போது தேர்வு செய்வீர்கள்?
வரிசைகளுக்குப் பதிலாக இணைக்கப்பட்ட பட்டியல்களைப் பயன்படுத்தும் போது, கருத்தில் கொள்ளுங்கள்:
- சீரற்ற அணுகலைப் பெற உங்களுக்கு எந்த உறுப்புகளும் தேவையில்லை.
- தற்காலிக முன்கணிப்பு இன்றியமையாததாக இருந்தால், பட்டியலிலிருந்து நிலையான நேர செருகல்கள் மற்றும் அகற்றுதல்கள் உங்களுக்குத் தேவை.
- முன்னுரிமை வரிசையை உருவாக்க, பட்டியலின் மையத்தில் உருப்படிகளை வைக்க வேண்டியிருக்கும்.
- பட்டியல் எவ்வளவு நீளமாக இருக்கும் என்று உங்களுக்குத் தெரியாது. வரிசை அளவு உயர்ந்தால், எளிய வரிசைகளைப் போலவே நினைவகத்தையும் மீண்டும் அறிவித்து நகல் எடுக்க வேண்டும்.
7. அசோசியேட்டிவ் வரிசையிலிருந்து அட்டவணைப்படுத்தப்பட்ட வரிசையை வேறுபடுத்துவது எது?
துணை மற்றும் அட்டவணைப்படுத்தப்பட்ட வரிசைகளுக்கு இடையிலான முதன்மை வேறுபாடுகள் பின்வரும் அட்டவணையில் பட்டியலிடப்பட்டுள்ளன.
- ஒரு துணை வரிசையை வரிசைப்படுத்த, உரை அல்லது எண் வடிவத்தில் உள்ள முக்கிய மதிப்பு ஜோடி பயன்படுத்தப்படுகிறது. அட்டவணைப்படுத்தப்பட்ட வரிசையின் விசைகள் அனைத்தும் எண்களாகும், மேலும் ஒவ்வொரு விசையும் தனித்தனி மதிப்புடன் இணைக்கப்பட்டுள்ளது.
- ஒரு துணை வரிசையில், விசை ஒரு சரமாக இருக்கலாம். 0 இல் தொடங்கும் முழு எண் விசைகளுடன் கூடிய அட்டவணைப்படுத்தப்பட்ட வரிசை.
- இரண்டு நெடுவரிசை அட்டவணையானது ஒரு துணை வரிசையின் நடத்தையைப் பிரதிபலிக்கிறது. ஒற்றை நெடுவரிசை அட்டவணையைப் போலவே அட்டவணைப்படுத்தப்பட்ட வரிசைகள் உள்ளன.
- வரைபடங்கள் ஒரு துணை வரிசை வகை. குறியீட்டு வரிசை என்பது வரைபடம் அல்ல.
8. வரிசைப்படுத்தப்பட்ட வரிசைகளை விட ஹீப் என்ன நன்மைகளைக் கொண்டுள்ளது?
வரிசைப்படுத்தப்பட்ட வரிசைகள் மீது Heap ஐப் பயன்படுத்துவதன் முக்கிய நன்மையாகும். குவியல் செயல்பாடுகள் விரைவாக இருக்கும்போது, வரிசையை வரிசைப்படுத்துவதற்கு நிறைய நேரம் தேவைப்படுகிறது. ஒரு வரிசையை வரிசைப்படுத்துவதை விட ஒரு குவியல் மிகச்சிறிய உறுப்பை மிக விரைவாக கண்டறிய முடியும்.
கொடுக்கப்பட்ட எண்களின் தொகுப்பை வரிசைப்படுத்தப்பட்ட வரிசைகளைப் பயன்படுத்தி இரண்டு வழிகளில் ஒன்றில் வரிசைப்படுத்தலாம். மறுபுறம், கொடுக்கப்பட்ட எண்களின் தொகுப்பிற்கு, ஒன்றுக்கு மேற்பட்ட சாத்தியமான குவியலாக இருக்கலாம்.
9. வரிசையின் அளவை எதிர்மறையாக வரையறுக்க முடியுமா?
இல்லை, ஒரு நெகடிவ் முழு எண்ணை ஒரு வரிசையின் அளவாக வரையறுக்க முடியாது. நாங்கள் அறிவித்தால், தொகுக்கும் நேரப் பிழை இருக்காது. இருப்பினும், இயக்க நேரத்தில், நாம் ஒரு NegativeArraySizeException ஐ சந்திப்போம்.
10. 1 முதல் 100-உறுப்பு வரிசையில் விடுபட்ட முழு எண்ணை எவ்வாறு கண்டறிவது?
பின்வரும் செயல்பாட்டைப் பயன்படுத்துவதன் மூலம் தொடரின் மொத்தத்தைக் கணக்கிடலாம்: n (n + 1) / 2
அணிவரிசையில் நகல் எதுவும் இல்லை அல்லது ஒன்றுக்கு மேற்பட்ட முழு எண்கள் இருந்தால் மட்டுமே இந்த செயல்பாடு செயல்படும். ஒரு அணிவரிசையில் நகல் கூறுகள் உள்ளதா, அதற்கு இணையான கூறுகள் ஏதேனும் உள்ளதா என்று பார்க்க வரிசையை வரிசைப்படுத்தலாம்.
11. ஒரு அணிவரிசையில் உள்ள ஒரு தனிமத்தின் குறியீட்டை எவ்வாறு கண்டுபிடிப்பது?
ஒரு தனிமத்தின் குறியீட்டை நேரியல் அல்லது பைனரி தேடல் மூலம் கண்டறியலாம். தேவையான உறுப்பின் பொருத்தத்தைக் கண்டறியும் வரை, ஒரு வரிசையில் உள்ள ஒவ்வொரு உறுப்புக்கும் ஒரு நேரியல் தேடல் செயல்பாடு சுழலும். பொருந்தக்கூடிய உறுப்பைக் கண்டறிந்ததும் அது குறியீட்டை வழங்குகிறது. இதன் விளைவாக, நேரியல் தேடலின் தற்காலிக சிக்கலானது O. (n) ஆகும். வரிசைப்படுத்தப்பட்ட மற்றும் வரிசைப்படுத்தப்படாத வரிசை இரண்டும் நேரியல் தேடலைப் பயன்படுத்தலாம்.
ஒரு பைனரி தேடலைப் பயன்படுத்தி, இடைவேளையின் இடைநிலை தேவையான உறுப்புடன் பொருந்தி, குறியீட்டை வழங்கும் வரை, வரிசையை பாதியாகப் பிரித்து, வரிசை வரிசைப்படுத்தப்பட்டால், உறுப்பின் குறியீட்டைப் பெறலாம். இதன் விளைவாக, பைனரி தேடலின் தற்காலிக சிக்கலானது O. (log n) ஆகும்.
12. ஒரு வரிசையிலிருந்து ஒரு குறிப்பிட்ட உறுப்பை எவ்வாறு அகற்றுவது?
அசல் வரிசையிலிருந்து உறுப்புகளை நீக்க முடியாது என்பதால், அவை வரையறுக்கப்பட்ட அளவுடன் நிலையான தொகுப்புகளாக இருப்பதால், நேர்காணல் செய்பவர் நீங்கள் வேறு அணுகுமுறையைப் பரிந்துரைக்கவும், கேள்வி எழுப்பும் சிக்கலைச் சமாளிக்கவும் முயல்கிறார். ஒரு உறுப்பை நீக்க புதிய வரிசையை உருவாக்குவதே சிறந்த செயல். இந்த வரிசையில் உள்ள முதல் வரிசையில் உள்ள உறுப்புகளை நீங்கள் நகலெடுக்கலாம் மற்றும் நீங்கள் நீக்க விரும்பும் உறுப்பை மட்டும் சேர்க்கலாம்.
மற்றொரு மூலோபாயம் வரிசையில் இலக்கு உறுப்பைக் கண்டுபிடித்து, பின்னர் இலக்கு உறுப்புக்கு வலதுபுறத்தில் உள்ள அனைத்து உருப்படிகளின் வரிசையையும் மாற்றியமைக்கிறது.
13. இரண்டு அணிகளின் சமத்துவத்தை எவ்வாறு சரிபார்க்கலாம்?
வழங்கப்பட்ட இரண்டு வரிசைகளின் நீளத்தை நீங்கள் முதலில் சரிபார்க்க வேண்டும். இரண்டு அணிவரிசைகளின் நீளம் சமமாக இருக்கும் போது அவற்றின் பொருந்தக்கூடிய உருப்படிகள் ஒப்பிடப்படுகின்றன. இரண்டு வரிசைகளும் சமமாக கருதப்படும். ஒவ்வொரு கடிதத்திலும் ஒவ்வொரு ஜோடி கூறுகளும் சமமாக இருந்தால். வரிசைகள் பெரிய அளவில் இருந்தால், இரண்டு வரிசைகளின் சமத்துவத்தை சரிபார்க்க இந்த அணுகுமுறை அறிவுறுத்தப்படவில்லை, ஏனெனில் இது நிறைய நேரம் எடுக்கும். நீங்கள் வரிசைகள் வகுப்பில் சேர்க்கப்பட்டுள்ள சமம்() முறையைப் பயன்படுத்தலாம், இருப்பினும், நேர்காணல் செய்பவர் உள்ளமைக்கப்பட்ட முறைகளைப் பயன்படுத்தாமல் இரண்டு வரிசைகளை ஒப்பிட்டுப் பார்க்கச் சொன்னால், இந்த வழி பயனுள்ளதாக இருக்கும்.
14. நாங்கள் வரிசைகளைப் பற்றி விவாதிக்கும்போது, "பரிமாணம்" மற்றும் "சப்ஸ்கிரிப்ட்" என்ற சொற்றொடர்களால் நீங்கள் எதைக் குறிப்பிடுகிறீர்கள்?
ஒரு வரிசையின் "பரிமாணம்" என்பது ஒவ்வொரு தனிப்பட்ட உறுப்பினரையும் அடையாளம் காண தேவையான குறியீடுகள் அல்லது சப்ஸ்கிரிப்ட்களின் எண்ணிக்கை. சப்ஸ்கிரிப்டுகள் மற்றும் பரிமாணங்கள் தெளிவாக இல்லாமல் இருக்கலாம். பரிமாணம் என்பது அனுமதிக்கப்பட்ட விசைகளின் வரம்பின் விளக்கமாகும், அதேசமயம் சப்ஸ்கிரிப்ட் என்பது ஒரு எண்ணாகும். ஒவ்வொரு வரிசை பரிமாணத்திற்கும் ஒரு சப்ஸ்கிரிப்ட் மட்டுமே தேவை.
உதாரணமாக, வரிசை 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 }
ஒரு நேரடியான அணுகுமுறையானது வரிசையின் மொத்த எண்ணிக்கையான 0களின் எண்ணிக்கையைக் கணக்கிடுவது, k என்று சொல்லவும், பின்னர் வரிசையில் முதல் k குறியீடுகளை 0s மற்றும் மீதமுள்ள குறியீடுகளை 1 உடன் நிரப்பவும். இதற்கு மாற்றாக, 1s இல் மொத்தம் எத்தனை 1கள் உள்ளன என்பதைக் கணக்கிடலாம். வரிசை k, வரிசையில் கடைசி k குறியீடுகளை 0 உடன் நிரப்பவும், மீதமுள்ள குறியீடுகளை XNUMX நிரப்பவும்.
கொடுக்கப்பட்ட அணுகுமுறை 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}
வெளியீடு {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. இடத்தில் இரண்டு வரிசைப்படுத்தப்பட்ட அணிகளை எவ்வாறு இணைப்பது.
வரிசைப்படுத்தப்பட்ட வரிசையைத் தக்கவைத்து, அதாவது, X[] மற்றும் Y[] வரிசைகளின் உருப்படிகளை - m மற்றும் n அளவு கொண்ட இரண்டு வரிசைப்படுத்தப்பட்ட வரிசைகளை ஒன்றிணைக்கவும். மீதமுள்ள கூறுகள்.
X[] அணிவரிசையில் உள்ள ஒரு உறுப்பு ஏற்கனவே சரியான நிலையில் இருந்தால் (அதாவது, மீதமுள்ள உறுப்புகளில் சிறியது), அதை புறக்கணிக்கவும்; இல்லையெனில், அதை சிறிய உறுப்புடன் மாற்றவும், இது Y[] இன் முதல் உறுப்பினராகவும் இருக்கும். மாற்றிய பின் வரிசைப்படுத்தப்பட்ட வரிசையைத் தக்கவைக்க, உறுப்பை (இப்போது Y[0] இல்) அதன் சரியான இடத்திற்கு Y[] இல் மாற்றவும்.
முதல் அணிவரிசையின் அளவு m மற்றும் இரண்டாவது அணிவரிசையின் அளவு n, மற்றும் நேர சிக்கலானது O(mn) ஆகும்.
21. உயர் மற்றும் குறைந்த நிலைகளை மாறி மாறி உருப்படிகளின் வரிசையை எவ்வாறு மறுவரிசைப்படுத்துவது?
ஒரு முழு எண் வரிசையை மறுசீரமைக்கவும், இதனால் ஒவ்வொரு அடுத்தடுத்த உறுப்பினரும் முந்தைய மற்றும் பின்வரும் கூறுகளை விட பெரியதாக இருக்கும். அணிவரிசையில் எந்த நகல் கூறுகளும் இல்லை என்று வைத்துக்கொள்வோம்.
வரிசையை வரிசைப்படுத்துவது அல்லது கூடுதல் இடத்தைப் பயன்படுத்துவது பயனுள்ள அணுகுமுறைக்கு அவசியமில்லை. திட்டமானது, வரிசையின் இரண்டாவது உறுப்பினருடன் தொடங்குவது மற்றும் ஒவ்வொரு லூப் மறு செய்கைக்கும் இரண்டு வரை செல்லும்.
கடைசி உறுப்பு முதல் ஒன்றை விட அதிகமாக இருந்தால் கூறுகளை மாற்றவும். இதே மாதிரி, பின்வரும் உறுப்பு தற்போதைய உறுப்பை விட பெரியதாக இருந்தால் இரண்டு பொருட்களையும் மாற்றவும். லூப்பின் முடிவில் குறிப்பிட்ட கட்டுப்பாடுகளுக்கு இணங்க விரும்பிய வரிசையைப் பெறுவோம்.
22. அணிவரிசையில் உள்ள ஒவ்வொரு தனிமத்தின் பெருக்கத்துடன் ஒரு பிரிவு ஆபரேட்டரைப் பயன்படுத்தாமல், வரிசையின் ஒவ்வொரு உறுப்பையும் எவ்வாறு மாற்றுவது?
பிரிவு ஆபரேட்டரைப் பயன்படுத்தாமல், ஒரு முழு எண் வரிசையில் உள்ள ஒவ்வொரு உறுப்பையும் மற்ற அனைத்து உறுப்புகளின் பெருக்கத்துடன் மாற்றவும்.
நேரியல் நேரம் மற்றும் நிலையான இடத்தில், இந்த சிக்கலை தீர்க்க நாம் மறுநிகழ்வைப் பயன்படுத்தலாம். வலது சப்அரேயில் உள்ள ஒவ்வொரு தனிமத்தின் தயாரிப்புகளையும் மீண்டும் மீண்டும் கணக்கிடுவது மற்றும் இடது சப்அரே தயாரிப்பை செயல்பாட்டு அளவுருக்களாக அனுப்புவது என்பது கருத்து.
நேர சிக்கலானது O(n) ஆகும்.
23. மடக்கை நேரத்தில் ஒரு வரிசையில் உள்ள வித்தியாசமான உறுப்பைக் கண்டறியவும்
ஒரு முழு எண் வரிசை கொடுக்கப்பட்டால், அதில் ஒரு உறுப்பினரைத் தவிர மற்ற அனைவருக்கும் சம எண்ணிக்கையிலான நிகழ்வுகள் உள்ளன, இந்த ஒரு உறுப்பு எத்தனை முறை தோன்றும் என்பதைத் தீர்மானிப்பதில் சிக்கல் உள்ளது. வரிசையில் ஒரே தனிமங்கள் ஜோடியாக இருந்தால் மடக்கை நேரம் மற்றும் நிலையான இடத்தில் ஒற்றைப்படை நிகழும் உறுப்பைக் கண்டறியவும் மற்றும் ஒரு வரிசையில் கொடுக்கப்பட்ட உறுப்பின் இரண்டு நிகழ்வுகளுக்கு மேல் இருக்க முடியாது.
XOR செயல்பாடு இந்த சிக்கலை நேரியல் நேரத்தில் தீர்க்க உதவுகிறது. அணிவரிசையில் உள்ள ஒவ்வொரு உறுப்பையும் XOR செய்வதே குறிக்கோள். சமமாக நிகழும் தனிமங்கள் ஒன்றையொன்று ரத்து செய்த பிறகு ஒற்றைப்படை நிகழும் கூறுகள் மட்டுமே எஞ்சும்.
இந்த சிக்கலை O(log(n)) நேரத்தில் கூட தீர்க்க முடியும்.
24. வட்ட வரிசையில் உள்ள ஒவ்வொரு உறுப்புக்கும் அடுத்தடுத்த பெரிய உறுப்பை எவ்வாறு பெறுவது?
வட்ட முழு எண் வரிசையில் ஒவ்வொரு உறுப்புக்கும் அடுத்த பெரிய உறுப்பு அமைந்திருக்க வேண்டும். வரிசையில் x ஒரு உறுப்புக்குப் பிறகு வரும் முதல் பெரிய முழு எண் அந்த உறுப்பின் அடுத்த பெரிய உறுப்பு ஆகும்.
வலமிருந்து இடமாக, நாம் வரிசை உருப்படிகளில் செயல்படலாம். ஸ்டாக் காலியாக இருக்கும் வரை அல்லது அதன் மேல் ஒரு உயர்ந்த உறுப்பு இருக்கும் வரை ஒவ்வொரு உறுப்பு x க்கும் லூப் செய்வதே குறிக்கோள். x இன் அடுத்த பெரிய உறுப்பை அடுக்கின் மேல் தோன்றும்படி அமைக்கவும்.
25. ஒரு அணிவரிசையின் தலைகீழ் எண்ணிக்கையைக் கண்டறிக?
ஒரு அணிவரிசையின் மொத்த தலைகீழ் எண்ணிக்கையைக் கண்டறியவும். ஒரு ஜோடி I j) என்பது I j) மற்றும் (A[i] > A[j]) வரிசை A இன் தலைகீழ் என்று குறிப்பிடப்படுகிறது. இந்த வரிசையில் உள்ள ஒவ்வொரு ஜோடியையும் நாம் கணக்கிட வேண்டும்.
அதை விடக் குறைவான அனைத்து வரிசை உறுப்பினர்களையும் அதன் வலதுபுறத்தில் எண்ணி, முடிவை வெளியீட்டில் சேர்ப்பது ஒரு நேரடியான அணுகுமுறையாகும்.
இந்த தீர்வு O(n2) சிக்கலானது, இதில் n என்பது உள்ளீட்டின் அளவு.
26. மழை நீர் பிடிப்பு பிரச்சனை என்றால் என்ன?
தலா ஒரு யூனிட் அகலத்தில் கொடுக்கப்பட்ட பார்களின் தொகுப்பில் அதிக அளவு தண்ணீரைக் கண்டுபிடிப்பது "பொறி மழைப்பொழிவு" என்று அழைக்கப்படுகிறது.
ஒவ்வொரு பட்டியின் இடது மற்றும் வலதுபுறத்தில் வைக்கப்படும் மிக உயர்ந்த பட்டியைத் தீர்மானிப்பதே குறிக்கோள். இடது மற்றும் வலதுபுறத்தில் உள்ள முன்னணி பார்களின் குறைந்தபட்சம், தற்போதைய பட்டையின் உயரம் குறைவாக உள்ளது, இது ஒவ்வொரு பட்டியின் மேல் சேமிக்கப்படும் தண்ணீரின் அளவு.
தீர்மானம்
மற்ற தரவு கட்டமைப்பு தலைப்புகளுடன் ஒப்பிடும்போது, வரிசைகள் எளிமையானவை. ஏஸ் வரிசை நேர்காணல் கேள்விகளுக்கு, நீங்கள் வரிசைகளைப் பற்றிய அடிப்படை புரிதலைக் கொண்டிருக்க வேண்டும்.
வரிசை செயல்பாடுகள் (வரிசையை அறிவிப்பது/உருவாக்குவது முதல் வரிசை உருப்படிகளை அணுகுவது/மாற்றுவது வரை), அத்துடன் வரிசை நேர்காணல் கேள்விகளுக்கு வெற்றிகரமாக பதிலளிப்பதற்காக லூப்கள், மறுநிகழ்வு மற்றும் அடிப்படை ஆபரேட்டர்கள் போன்ற நிரலாக்கக் கருத்துகளை நீங்கள் விரிவாக மதிப்பாய்வு செய்ய வேண்டும். சிக்கலை முழுமையாக அங்கீகரிக்கவும்.
உங்களுக்கு ஏதேனும் கேள்விகள் இருந்தால், நீங்கள் விளக்கம் பெற வேண்டும். சிக்கலை இன்னும் சமாளிக்கக்கூடிய பகுதிகளாகப் பிரிப்பதைப் பற்றி சிந்தியுங்கள். நீங்கள் நிரலாக்கத்தைத் தொடங்கும் முன், அல்காரிதம் மனதில் இருப்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்; அதை ஒரு பாய்வு விளக்கப்படத்தில் எழுதவும் அல்லது காட்சிப்படுத்தவும். பின்னர் குறியீடு எழுத தொடங்கும்.
ஒரு பதில் விடவும்