မာတိကာ[ဖျောက်][ရှိုး]
- 1. Array ကို သင် ဘယ်လို သတ်မှတ်ပါသလဲ။
- 2. Dynamic Arrays- ၎င်းတို့သည် အဘယ်နည်း။ Basic Arrays နှင့် ၎င်းတို့ကို အဘယ်အရာက ခြားနားစေသနည်း။
- 3. Array နှင့် Dictionary တစ်ခုသည် တစ်ခုနှင့်တစ်ခု မည်သို့ကွဲပြားသနည်း။
- 4. Array များ၏ အကျိုးကျေးဇူးများနှင့် အားနည်းချက်အချို့ကို စာရင်းပြုစုပါ။
- 5. "Sparse Array" က ဘာကိုရည်ညွှန်းတာလဲ။
- 6. array တစ်ခုပေါ်တွင် လင့်ခ်ချိတ်ထားသောစာရင်းကို မည်သည့်အချိန်တွင် ရွေးချယ်မည်နည်း။
- 7. Indexed Array တစ်ခုအား Associative Array နှင့် မည်သည့်အရာက ခွဲခြားသနည်း။
- 8. Heap သည် အမျိုးအစားခွဲထားသော arrays များထက် အဘယ်အားသာချက်များရှိသနည်း။
- 9. Array ၏ အရွယ်အစားကို အနုတ်အဖြစ် သတ်မှတ်နိုင်ပါသလား။
- 10. 1 မှ 100-element array တွင် ပျောက်ဆုံးနေသော integer ကို သင်မည်သို့ရှာဖွေနိုင်သနည်း။
- 11. array တစ်ခုရှိ element တစ်ခု၏ အညွှန်းကိန်းကို သင်မည်သို့ရှာဖွေနိုင်သနည်း။
- 12. array တစ်ခုမှ သီးခြား element တစ်ခုကို မည်ကဲ့သို့ ဖယ်ရှားနိုင်မည်နည်း။
- 13. အခင်းအကျင်းနှစ်ခု၏ တန်းတူညီမျှမှုကို မည်သို့အတည်ပြုနိုင်သနည်း။
- 14. ခင်းကျင်းမှုများကို ကျွန်ုပ်တို့ ဆွေးနွေးသောအခါ၊ "Dimension" နှင့် "Subscript" ဟူသော စကားစုက ဘာကိုဆိုလိုသနည်း။
- Coding အင်တာဗျူးမေးခွန်းများ
- 15. သတ်မှတ်ထားသော ပေါင်းလဒ်ပါရှိသော array တွင် အတွဲတစ်တွဲကို ရှာပါ။
- 16. ဒွိအခင်းအကျင်းများကို မျဉ်းကြောင်းအချိန်ဖြင့် စီခြင်း။
- 17. array တစ်ခုတွင် အကြီးဆုံး two-int ထုတ်ကုန်ကို ရှာပါ။
- 18. Array ၏ သုညအားလုံးကို အဆုံးအထိ မည်သို့ပြောင်းမည်နည်း။
- 19. လုပ်ဆောင်ချက်တစ်ခုတွင် ပြောင်းထားသော entry နှစ်ခုပါရှိသော array တစ်ခုကို စီမည်နည်း။
- 20. စီထားသော array နှစ်ခုကို နေရာတွင် ပေါင်းစပ်နည်း။
- 21. မြင့် နှင့် နိမ့်သော ရာထူးများ ဖြင့် ပစ္စည်း များ ၏ အခင်းအကျင်း ကို ဘယ်လို ပြန်စီမလဲ ။
- 22. Array တစ်ခုစီ၏ ဒြပ်စင်တစ်ခုစီ၏ ထုတ်ကုန်တစ်ခုစီကို အပိုင်းခွဲအော်ပရေတာမသုံးဘဲ မည်ကဲ့သို့ အစားထိုးရမည်နည်း။
- 23. logarithmic အချိန်အတွင်း array တစ်ခုရှိ အထူးဆန်းဆုံးဒြပ်စင်ကို ရှာပါ။
- 24. စက်ဝိုင်းအခင်းတစ်ခုတွင် ဒြပ်စင်တစ်ခုစီအတွက် နောက်ဆက်တွဲပိုကြီးသောဒြပ်စင်ကို မည်သို့ရယူရမည်နည်း။
- 25. array တစ်ခု၏ ပြောင်းပြန်လှန်ရေတွက်ကို ရှာပါ။
- ၂၆။ မိုးရေလှောင်ကန် ပြဿနာက ဘာလဲ။
- ကောက်ချက်
Coding အင်တာဗျူးများတွင် DSA မေးခွန်းများပါရှိပါသည်။ FAANG သို့မဟုတ် အခြားသော Tier-1 နည်းပညာလုပ်ငန်းနှင့် သင်၏ လာမည့်နည်းပညာဆိုင်ရာ အင်တာဗျူးအတွက် အဆင်သင့်ဖြစ်နေပါက သင်သည် array များကို ကျွမ်းကျင်ရပါမည်။
ကုဒ်ရေးနည်းအင်တာဗျူးအများစုတွင်၊ ၎င်းသည် Strings မှဒုတိယနေရာတွင်ရှိသည်။ array ဆိုသည်မှာ memory ထဲတွင် တစ်ခုနှင့်တစ်ခု နီးကပ်စွာ ထားရှိထားသော ဆက်စပ်ဒေတာဒြပ်စင်များကို အုပ်စုဖွဲ့ခြင်း ဖြစ်သည်။
၎င်းတို့သည် C၊ C++၊ Java၊ Python၊ Perl နှင့် Ruby ကဲ့သို့သော ပရိုဂရမ်ဘာသာစကားအားလုံးနှင့် ချိတ်ဆက်ထားသောကြောင့် ၎င်းတို့သည် နေရာတိုင်းတွင် ရှိနေပါသည်။ arrays အပေါ်အခြေခံ၍ coding စိန်ခေါ်မှုများနှင့် အင်တာဗျူးမေးခွန်းများနှင့် အဖြေများအတွက် ဆက်လက်ဖတ်ရှုပါ။
အသုံးပြုရလွယ်ကူပြီး နားလည်နိုင်ကာ ကျွန်ုပ်တို့အများစုနှင့်ရင်းနှီးရမည်ဖြစ်သောကြောင့် ကုဒ်ရေးနည်းပြဿနာများကိုဖြေရှင်းရန်အတွက် Python ကို ဤပို့စ်တွင်အသုံးပြုပါမည်။
ရဲ့စတင်ကြပါစို့။
1. Array ကို သင် ဘယ်လို သတ်မှတ်ပါသလဲ။
- ဆက်စပ်ဒေတာအမျိုးအစားအုပ်စုတစ်စုသည် array တစ်ခုဖြစ်သည်။
- Array များကို အမြဲတမ်း fixed လုပ်ထားသည်။
- အလားတူ variable အမျိုးအစားကို array object များဖြင့် နေရာများစွာတွင် သိမ်းဆည်းထားသည်။
- ပဏာမ အမျိုးအစားများနှင့် အရာဝတ္တုရည်ညွှန်းချက်များ နှစ်ခုလုံးသည် ၎င်းနှင့် လိုက်ဖက်ပါသည်။
2. Dynamic Arrays- ၎င်းတို့သည် အဘယ်နည်း။ Basic Arrays နှင့် ၎င်းတို့ကို အဘယ်အရာက ခြားနားစေသနည်း။
Dynamic Array များ (ကြီးထွားနိုင်သော arrays များဟုလည်း ရည်ညွှန်းသော၊ အရွယ်အစားပြောင်းနိုင်သော arrays၊ changeable arrays သို့မဟုတ် Java ရှိ ArrayLists) တို့အား ပေးဆောင်သော အလိုအလျောက် အတိုင်းအတာချဲ့ခြင်းသည် သိသာထင်ရှားသော အားသာချက်တစ်ခုဖြစ်သည်။
array များသည် ပုံသေအရွယ်အစားရှိသောကြောင့် သင့် array သည် မည်မျှကြိုတင်သိမ်းဆည်းထားမည်ကို သင်အမြဲသိထားရပါမည်။ အခြားတစ်ဖက်တွင်မူ၊ သင်သည် ၎င်းသို့ အပိုအဖွဲ့ဝင်များထည့်လိုက်သည်နှင့်အမျှ ပြောင်းလဲနေသော ခင်းကျင်းမှု ကြီးထွားလာသောကြောင့် ၎င်း၏အရွယ်အစားအတိအကျကို ကြိုတင်သိရန် မလိုအပ်ပါ။
3. Array နှင့် Dictionary တစ်ခုသည် တစ်ခုနှင့်တစ်ခု မည်သို့ကွဲပြားသနည်း။
ဤသည်မှာ ပုံမှန်မေးလေ့ရှိသော အင်တာဗျူးမေးခွန်းများ၏ အခြေခံအခင်းအကျင်းတစ်ခုဖြစ်သည်။ အောက်ပါတို့သည် array နှင့် အဘိဓာန်များကြား အဓိက ခြားနားချက်များဖြစ်သည် ။
- အခင်းအကျင်းတစ်ခုသည် ဆင်တူသည့်အရာများ မှာယူထားသောစာရင်းတစ်ခုဖြစ်သည်။ အခြားတစ်ဖက်တွင် အဘိဓာန်တွင် သော့တန်ဖိုးအတွဲများရှိသည်။
- Array အရွယ်အစားများသည် dynamically ပြောင်းလဲနိုင်သည်။ အဘိဓာန်များတွင် ထိုသို့သော တက်ကြွသော အတွေးအခေါ်များ မရှိပါ။
- array တစ်ခုကို အသုံးမပြုမီ၊ ၎င်း၏အရွယ်အစားကို သတ်မှတ်ရပါမည်။ အဘိဓာန်အရွယ်အစားများကို စိတ်ကြိုက်လုပ်ရန် မလိုအပ်ပါ။
- array ၏အရွယ်အစားကိုချဲ့ထွင်လိုပါက Redim ထုတ်ပြန်ချက်ကိုသုံးပါ။ အဘိဓာန်များတွင်၊ ကြေငြာချက်မပါဘဲ ဒြပ်စင်တစ်ခုကို ထည့်နိုင်သည်။
4. Array များ၏ အကျိုးကျေးဇူးများနှင့် အားနည်းချက်အချို့ကို စာရင်းပြုစုပါ။
အားသာချက်များ:
- Array များသည် ဒြပ်စင်များစွာကို တစ်ပြိုင်နက်တည်း စီနိုင်သည်။
- အခြား ဒေတာအဆောက်အဦများအစည်းများ၊ တန်းစီများ၊ လင့်ခ်ချိတ်ထားသော စာရင်းများ၊ သစ်ပင်များ၊ ဂရပ်များ စသည်တို့ကဲ့သို့၊ အခင်းအကျင်းတစ်ခုတွင် အကောင်အထည်ဖော်နိုင်ပါသည်။
- array တစ်ခု၏ဒြပ်စင်တစ်ခုသို့ရောက်ရှိရန် အညွှန်းတစ်ခုအား အသုံးပြုနိုင်သည်။
အားနည်းချက်:
- Array တစ်ခု၏ အရွယ်အစားကို ကြိုတင်ကြေငြာရပါမည်။ array ကြေငြာသည့်အချိန်တွင်၊ ကျွန်ုပ်တို့လိုအပ်သောအရွယ်အစားကို သတိမပြုမိနိုင်ပါ။
- array ၏ဖွဲ့စည်းပုံသည် static ဖြစ်သည်။ array အရွယ်အစားကို အမြဲတမ်း fixed ဖြစ်ပြီး memory ခွဲဝေမှုကို တိုးမြှင့်ခြင်း သို့မဟုတ် လျှော့ချခြင်းမပြုနိုင်ကြောင်း ဆိုလိုသည်။
5. "Sparse Array" က ဘာကိုရည်ညွှန်းတာလဲ။
sparse array သည် သုညတန်ဖိုးများရှိသော entry အများအပြားပါရှိသော data array တစ်ခုဖြစ်သည်။ ဆန့်ကျင်ဘက်အားဖြင့်၊ သိပ်သည်းသော ခင်းကျင်းတစ်ခုတွင် သုညမဟုတ်သော တန်ဖိုးများဖြင့် ၎င်း၏အရာများအများစု ပါဝင်ပါသည်။ နံပါတ်များကို အရာဝတ္ထုများအဖြစ် ပြောင်းလဲပေးသည့် ကျဲခင်းအညွှန်းများ၏ အညွှန်းများတွင် ကွက်လပ်များ ပါဝင်နိုင်သည်။ HashMap နှင့် နှိုင်းယှဉ်ပါက ၎င်းတို့သည် မှတ်ဉာဏ်ပိုသက်သာပါသည်။
6. array တစ်ခုပေါ်တွင် လင့်ခ်ချိတ်ထားသောစာရင်းကို မည်သည့်အချိန်တွင် ရွေးချယ်မည်နည်း။
Array များအစား လင့်ခ်ချိတ်ထားသောစာရင်းများကို အသုံးပြုသည့်အခါ၊ ထည့်သွင်းစဉ်းစားရန်-
- ကျပန်းဝင်ရောက်ခွင့်ရှိရန် မည်သည့်ဒြပ်စင်မှ မလိုအပ်ပါ။
- ယာယီကြိုတင်ခန့်မှန်းနိုင်မှုသည် မရှိမဖြစ်လိုအပ်ပါက၊ စာရင်းမှ အဆက်မပြတ်ထည့်သွင်းခြင်းနှင့် ဖယ်ရှားခြင်းများ လိုအပ်ပါသည်။
- ဦးစားပေးတန်းစီတစ်ခုကို ဖန်တီးရန်အတွက်၊ စာရင်း၏အလယ်တွင် အရာများကို ထားရှိရန် လိုအပ်နိုင်သည်။
- စာရင်းက ဘယ်လောက်ကြာမယ် မသိဘူး။ array အရွယ်အစား တက်လာပါက၊ ရိုးရှင်းသော array များကဲ့သို့ပင် memory ကို ပြန်လည်ကြေငြာပြီး ပွားရပါမည်။
7. Indexed Array တစ်ခုအား Associative Array နှင့် မည်သည့်အရာက ခွဲခြားသနည်း။
ဆက်စပ်မှု နှင့် အညွှန်းကိန်း array များအကြား အဓိက ခြားနားချက်များကို အောက်ပါဇယားတွင် ဖော်ပြထားပါသည်။
- ဆက်စပ် ခင်းကျင်းတစ်ခုကို စီရန် စာသား သို့မဟုတ် ဂဏန်းဖော်မတ်ရှိ သော့တန်ဖိုးအတွဲကို အသုံးပြုသည်။ အညွှန်းတပ်ထားသော array ၏သော့များအားလုံးသည် ဂဏန်းများဖြစ်ပြီး သော့တစ်ခုစီသည် ကွဲပြားသောတန်ဖိုးတစ်ခုနှင့် ချိတ်ဆက်ထားသည်။
- Associative Array တွင် သော့သည် string တစ်ခု ဖြစ်နိုင်သည်။ 0 မှစတင်၍ ကိန်းပြည့်သော့များဖြင့် အညွှန်းပြုလုပ်ထားသော array။
- ကော်လံနှစ်ခု ဇယားတစ်ခုသည် ပေါင်းစည်းထားသော အခင်းအကျင်းတစ်ခု၏ အပြုအမူကို တုပသည်။ single-column table နှင့် ဆင်တူသော indexed arrays များ။
- Maps သည် ဆက်စပ် array အမျိုးအစားတစ်ခုဖြစ်သည်။ အညွှန်း array တစ်ခုသည် မြေပုံတစ်ခုမဟုတ်ပါ။
8. Heap သည် အမျိုးအစားခွဲထားသော arrays များထက် အဘယ်အားသာချက်များရှိသနည်း။
ခွဲထားသော Arrays များပေါ်တွင် Heap ကိုအသုံးပြုခြင်း၏ အချိန်ထိရောက်မှုသည် အဓိကအကျိုးကျေးဇူးဖြစ်သည်။ အစုအဝေးလုပ်ဆောင်မှုများသည် ပိုမိုမြန်ဆန်သော်လည်း၊ array တစ်ခုကို စီရန် အချိန်များစွာ လိုအပ်သည်။ အမှိုက်ပုံသည် အသေးငယ်ဆုံးဒြပ်စင်ကို အခင်းအကျင်းတစ်ခုစီခွဲနိုင်သည်ထက် ပိုမိုလျင်မြန်စွာ ရှာဖွေတွေ့ရှိနိုင်သည်။
Sorted Arrays ကို အသုံးပြု၍ ပေးထားသော နံပါတ်များ အစုအဝေးကို နည်းလမ်း နှစ်မျိုးထဲမှ တစ်ခုဖြင့် စီစဉ်နိုင်သည်။ အခြားတစ်ဖက်တွင်၊ ပေးထားသော ကိန်းဂဏာန်းများစုစည်းမှုအတွက် ဖြစ်နိုင်ချေရှိသော အမှိုက်ပုံတစ်ခုထက်မက ရှိနိုင်ပါသည်။
9. Array ၏ အရွယ်အစားကို အနုတ်အဖြစ် သတ်မှတ်နိုင်ပါသလား။
မဟုတ်ပါ၊ ကျွန်ုပ်တို့သည် အနုတ်ကိန်းပြည့်တစ်ခုကို array ၏အရွယ်အစားအဖြစ် သတ်မှတ်၍မရပါ။ ကျွန်ုပ်တို့ကြေညာပါက compile-time error ရှိမည်မဟုတ်ပါ။ runtime တွင်၊ သို့သော်၊ ကျွန်ုပ်တို့သည် NegativeArraySizeException ကိုတွေ့လိမ့်မည်။
10. 1 မှ 100-element array တွင် ပျောက်ဆုံးနေသော integer ကို သင်မည်သို့ရှာဖွေနိုင်သနည်း။
အောက်ပါလုပ်ဆောင်ချက်ကို အသုံးပြုခြင်းဖြင့် စီးရီး၏စုစုပေါင်းကို တွက်ချက်နိုင်သည်- n (n + 1) / 2
array တွင် ထပ်နေခြင်းမရှိပါက သို့မဟုတ် ကိန်းပြည့်တစ်ခုထက်ပို၍ ပျောက်ဆုံးနေမှသာ ဤလုပ်ဆောင်ချက်ကို လုပ်ဆောင်နိုင်မည်ဖြစ်သည်။ array တစ်ခုတွင် ပွားနေသောဒြပ်စင်များ ရှိမရှိ၊ တူညီသည့်ဒြပ်စင်များ ရှိမရှိကို ကြည့်ရှုရန် array ကို စီနိုင်ပါသည်။
11. array တစ်ခုရှိ element တစ်ခု၏ အညွှန်းကိန်းကို သင်မည်သို့ရှာဖွေနိုင်သနည်း။
ဒြပ်စင်တစ်ခု၏ အညွှန်းကို မျဉ်းကြောင်း သို့မဟုတ် ဒွိရှာဖွေမှုမှတစ်ဆင့် ရှာဖွေတွေ့ရှိနိုင်သည်။ လိုအပ်သောဒြပ်စင်၏ ကိုက်ညီမှုကို မတွေ့မချင်း၊ linear search function သည် array တစ်ခုရှိ element တစ်ခုချင်းစီအပေါ်တွင် လှည့်ပတ်နေပါသည်။ ကိုက်ညီသောဒြပ်စင်ကိုရှာဖွေပြီးသည်နှင့် ၎င်းသည် အညွှန်းကို ပြန်ပေးသည်။ ထို့ကြောင့်၊ linear search ၏ temporal complexity သည် O. (n) ဖြစ်သည်။ စီထားခြင်း နှင့် မခွဲမထားသော ခင်းကျင်း နှစ်ခုလုံးသည် မျဉ်းသားရှာဖွေမှုကို အသုံးပြုနိုင်သည်။
ကြားကာလ၏ အလယ်တန်းသည် လိုအပ်သော ဒြပ်စင်နှင့် အညွှန်းကို ပေးဆောင်သည့်တိုင်အောင် array ကို တစ်ဝက်စီခွဲကာ အဆက်မပြတ် ခွဲခြမ်းနေသော ဒွိစုံရှာဖွေမှုကို အသုံးပြုကာ၊ array ကို စီထားပါက ဒြပ်စင်၏ အညွှန်းကိန်းကို သင်ရနိုင်သည်။ ထို့ကြောင့် binary ရှာဖွေမှု၏ ယာယီရှုပ်ထွေးမှုသည် O. (log n) ဖြစ်သည်။
12. array တစ်ခုမှ သီးခြား element တစ်ခုကို မည်ကဲ့သို့ ဖယ်ရှားနိုင်မည်နည်း။
၎င်းတို့သည် သတ်မှတ်ထားသောအရွယ်အစားဖြင့် ပုံသေသတ်မှတ်ထားသောအတွဲများဖြစ်သောကြောင့် မူရင်း array မှဒြပ်စင်များကို ရိုးရှင်းစွာဖျက်၍မရသောကြောင့်၊ တွေ့ဆုံမေးမြန်းသူသည် သင့်အား မတူညီသောချဉ်းကပ်မှုတစ်ခုအား အကြံပြုရန်နှင့် မေးခွန်းထုတ်သည့်ပြဿနာကို ဖြေရှင်းရန်ရှာဖွေနေပါသည်။ အကောင်းဆုံးလုပ်ဆောင်မှုမှာ ဒြပ်စင်တစ်ခုကိုဖျက်ရန်အတွက် array အသစ်တစ်ခုပြုလုပ်ရန်ဖြစ်သည်။ ဤအခင်းအကျင်းရှိ ပထမအခင်းအကျင်းမှ အစိတ်အပိုင်းများကို ပွားနိုင်ပြီး သင်ဖျက်လိုသည့်ဒြပ်စင်ကိုသာ ထည့်သွင်းနိုင်သည်။
အခြားနည်းဗျူဟာတစ်ခုတွင် array တွင်ပစ်မှတ်ဒြပ်စင်ကိုရှာဖွေပြီးနောက်ပစ်မှတ်ဒြပ်စင်၏ညာဘက်ရှိအရာအားလုံး၏အစီအစဥ်ကိုပြောင်းပြန်လှန်ခြင်းပါဝင်သည်။
13. အခင်းအကျင်းနှစ်ခု၏ တန်းတူညီမျှမှုကို မည်သို့အတည်ပြုနိုင်သနည်း။
ပေးထားသော array နှစ်ခု၏ အရှည်ကို ဦးစွာ စစ်ဆေးရပါမည်။ အလျားနှစ်ခုလုံး၏ တူညီသည့်အရာများကို ၎င်းတို့၏ အလျားများ ညီမျှသောအခါ နှိုင်းယှဉ်သည်။ array နှစ်ခုကို တူညီသည်ဟု မှတ်ယူပါမည်။ စာပေးစာယူတိုင်းတွင် အစိတ်အပိုင်းတစ်စုံစီသည် တူညီပါက။ array များသည် အချိန်အများကြီးယူရသောကြောင့် array များသည် အရွယ်အစားကြီးမားပါက ဤချဉ်းကပ်နည်းသည် array နှစ်ခု၏ ညီမျှမှုကို စစ်ဆေးရန် အကြံပြုမည်မဟုတ်ပါ။ Arrays အတန်းတွင် ပါဝင်သော equals() method ကို သင်အသုံးပြုနိုင်သော်လည်း၊ တွေ့ဆုံမေးမြန်းသူသည် built-in နည်းလမ်းများကို အသုံးမပြုဘဲ array နှစ်ခုကို နှိုင်းယှဉ်ခိုင်းပါက၊ ဤနည်းလမ်းသည် အသုံးဝင်ပါလိမ့်မည်။
14. ခင်းကျင်းမှုများကို ကျွန်ုပ်တို့ ဆွေးနွေးသောအခါ၊ "Dimension" နှင့် "Subscript" ဟူသော စကားစုက ဘာကိုဆိုလိုသနည်း။
array တစ်ခု၏ "Dimension" သည် အဖွဲ့ဝင်တစ်ဦးစီကို ခွဲခြားသတ်မှတ်ရန် လိုအပ်သော အညွှန်းကိန်းများ သို့မဟုတ် subscripts အရေအတွက်များဖြစ်သည်။ စာရင်းသွင်းမှုများနှင့် အတိုင်းအတာများသည် မရှင်းလင်းနိုင်ပါ။ အတိုင်းအတာတစ်ခုသည် ခွင့်ပြုထားသောသော့များ၏ အကွာအဝေး၏ ဖော်ပြချက်ဖြစ်ပြီး၊ subscript သည် နံပါတ်တစ်ခုဖြစ်သည်။ array dimension တစ်ခုစီအတွက် subscript တစ်ခုသာ လိုအပ်ပါသည်။
ဥပမာအားဖြင့်၊ array arr[10][5] တွင် အတိုင်းအတာနှစ်ခုရှိသည်။ တစ်ခုတွင် 10 နှင့် နောက်တစ်ခုတွင် 5 အရွယ်အစားရှိသည်။ ၎င်း၏ အစိတ်အပိုင်းများကို ကိုင်တွယ်ရန်၊ သင်သည် စာရင်းသွင်းမှုနှစ်ခု လိုအပ်သည်။ နှစ်ခုလုံးသည် 0 နှင့် 4 ကြား; 0 နှင့် 9 အကြားတစ်ခု၊ ပါဝင်သည်။
Coding အင်တာဗျူးမေးခွန်းများ
15. သတ်မှတ်ထားသော ပေါင်းလဒ်ပါရှိသော array တွင် အတွဲတစ်တွဲကို ရှာပါ။
ဥပမာ,
input:
- ဂဏန်းများ = [8၊ 7၊ 2၊ 5၊ 3၊ 1]
- ပစ်မှတ် = 10
output:
- အတွဲ (၈၊ ၂)၊
- Or
- အတွဲ (၈၊ ၂)၊
input:
- ဂဏန်းများ = [5၊ 2၊ 6၊ 8၊ 1၊ 9]
- ပစ်မှတ် = 12
output:
- အတွဲရှာမတွေ့ပါ။
16. ဒွိအခင်းအကျင်းများကို မျဉ်းကြောင်းအချိန်ဖြင့် စီခြင်း။
မျဉ်းနားအချိန်နှင့် ပုံသေဧရိယာတွင် ဒွိအခင်းအကျင်းကို စီပါ။ အထွက်သည် သုညအားလုံးကို ပထမ၊ ထို့နောက် အားလုံးပြသသင့်သည်။
ဥပမာ,
- ထည့်သွင်းခြင်း- { 1၊ 0၊ 1၊ 0၊ 1၊ 0၊ 0၊ 1 }
- အထွက်- { 0၊ 0၊ 0၊ 0၊ 1၊ 1၊ 1၊ 1 }
ရိုးရှင်းသောချဉ်းကပ်နည်းမှာ array ၏ စုစုပေါင်း 0s အရေအတွက်ကို တွက်ချက်ရန်၊ k ဟုပြောပါ၊ ထို့နောက် array ရှိ ပထမ k ညွှန်းကိန်းများကို 0s ဖြင့် ဖြည့်ကာ ကျန်အညွှန်းကိန်းများကို 1 ဖြင့် တွက်ချက်မည်ဖြစ်သည်။ အခြားရွေးချယ်စရာအနေဖြင့်၊ ကျွန်ုပ်တို့သည် 1s တွင် စုစုပေါင်းမည်မျှရှိသည်ကို တွက်ချက်နိုင်ပါသည်။ array k၊ array တွင် နောက်ဆုံး k indices များကို 1 ဖြင့်ဖြည့်ပြီး ကျန် indices များကို 0 ဖြင့် ချန်ထားပါ။
ပေးထားသောချဉ်းကပ်မှုတွင် O(n) အချိန်ရှုပ်ထွေးမှုရှိပြီး n သည် ထည့်သွင်းမှု၏အရွယ်အစားဖြစ်သည့် အပိုသိုလှောင်မှုကို အသုံးမပြုပါ။
17. array တစ်ခုတွင် အကြီးဆုံး two-int ထုတ်ကုန်ကို ရှာပါ။
integer array တွင် ဂဏန်းနှစ်လုံး၏ အကြီးဆုံးထုတ်ကုန်ကို ရှာပါ။
ဥပမာအနေနဲ့ array 10 3 5 6 2 ကို စဉ်းစားကြည့်ပါ။ (-10၊ -3) သို့မဟုတ် (5၊ 6) အတွဲသည် အမြင့်ဆုံးထုတ်ကုန်ဖြစ်သည်။
ဒြပ်စင်တိုင်းကို ပေါင်းစပ်စဉ်းစားပြီး ၎င်းတို့၏ ထုတ်ကုန်ကို တွက်ဆခြင်းသည် မိုက်မဲသော ချဉ်းကပ်မှုတစ်ခုဖြစ်သည်။ လက်ရှိအတွဲ၏ ထုတ်ကုန်သည် ယခုအချိန်အထိ ရရှိထားသော အများဆုံးထုတ်ကုန်ထက် ပိုကြီးပါက၊ အများဆုံးထုတ်ကုန်ကို အပ်ဒိတ်လုပ်ပါ။ နောက်ဆုံးထုတ်ကုန်၏ နောက်ဆုံးအစိတ်အပိုင်းများကို ပရင့်ထုတ်ပါ။
အထက်ပါအဖြေသည် n သည် input ပမာဏဖြစ်သည့် O(n2) ၏ အချိန်ရှုပ်ထွေးမှုရှိပြီး နေရာပိုမယူပါ။
18. Array ၏ သုညအားလုံးကို အဆုံးအထိ မည်သို့ပြောင်းမည်နည်း။
ကိန်းပြည့်အခင်းတစ်ခုရှိ သုညအားလုံးကို အဆုံးအထိ ရွှေ့ပါ။ အဖြေသည် ကိန်းသေနေရာများကို မသုံးဘဲ array ၏ အစိတ်အပိုင်းများ၏ နှိုင်းရအစီအစဥ်ကို ထိန်းသိမ်းထားသင့်သည်။
input: {1,2,3,0,8,0,4,7}
အထွက်သည် {1,2,3,8,4,7,0,0} ဖြစ်လိမ့်မည်
လက်ရှိဒြပ်စင်သည် သုညမဟုတ်ပါက array တွင် အောက်ပါရနိုင်သောအနေအထားတွင် element ကိုထည့်ပါ။ Array ၏အရာများအားလုံးကို လုပ်ဆောင်ပြီးသည်နှင့် လက်ကျန်အညွှန်းများအားလုံးကို 0 ဖြင့်ဖြည့်ပါ။
ရှေ့ဖြေရှင်းချက်တွင် n သည် input ၏အရွယ်အစားဖြစ်သည့် O(n) အချိန်ရှုပ်ထွေးမှုရှိသည်။
19. လုပ်ဆောင်ချက်တစ်ခုတွင် ပြောင်းထားသော entry နှစ်ခုပါရှိသော array တစ်ခုကို စီမည်နည်း။
ဖလှယ်ထားသော အရာနှစ်ခုနှင့် ၎င်း၏ဒြပ်စင်အားလုံးကို ကြီးလိုက်ကြီးလိုက် စီစဉ်ပေးထားသည့် အခင်းအကျင်းတစ်ခုအား မျဉ်းပြောင်းအချိန်အတွင်း စီစစ်ပါ။ array တွင် ထပ်နေခြင်းမရှိဟု ဟန်ဆောင်ပါ။
ထည့်သွင်းခြင်း-= [1,9,3,4,7,2] သို့မဟုတ် [9,3,7,2,1,4] သို့မဟုတ် [2,4,1,7,3,9]
အထွက်- = [1,2,3,4,7,9]
array ရှိ ဒုတိယဒြပ်စင်မှအစပြု၍ ရည်ရွယ်ချက်မှာ ဒြပ်စင်တစ်ခုစီကို ၎င်း၏ရှေ့ဆက်သူနှင့် နှိုင်းယှဉ်ရန်ဖြစ်သည်။ ညွှန်ပြချက်နှစ်ခု၊ x နှင့် y ကိုယူခြင်းဖြင့် အငြင်းပွားမှု၏ အနေအထားကို သိမ်းဆည်းထားသည်။
ယခင်ဒြပ်စင်၏ အညွှန်းကိန်းနှင့် y ကို ယခင်အရာထက် ပိုကြီးပါက လက်ရှိဒြပ်စင်၏ အညွှန်းသို့ x ကို အပ်ဒိတ်လုပ်ပါ။ ယခင်ဒြပ်စင်သည် လက်ရှိဒြပ်စင်ထက် ပိုကြီးကြောင်း တွေ့ရှိရပါက လက်ရှိဒြပ်စင်၏ အညွှန်းသို့ y ကို အပ်ဒိတ်လုပ်ပါ။
နောက်ဆုံးတွင်၊ ကျွန်ုပ်တို့သည် ကပ်လျက်ဒြပ်စင်တစ်စုံစီကို လုပ်ဆောင်ပြီးသည်နှင့် အညွှန်း x နှင့် y တွင် ဒြပ်စင်များကို ပြောင်းပါ။
အထက်ဖော်ပြပါ နည်းလမ်းသည် အရွယ်အစား n ၏ input array ၏ တစ်ခုတည်းသော စကင်န်တစ်ခုတည်းကိုသာ လုပ်ဆောင်နိုင်သောကြောင့်၊ ၎င်း၏ အချိန်ရှုပ်ထွေးမှုသည် O(n) ဖြစ်သည်။ ဖြေရှင်းချက်အတွက် နောက်ထပ်အခန်းမလိုအပ်ပါ။
20. စီထားသော array နှစ်ခုကို နေရာတွင် ပေါင်းစပ်နည်း။
X[] နှင့် Y[]—စီစီထားသည့် အရွယ်အစား m နှင့် n တစ်ခုစီ၏ အမျိုးအစားနှစ်ခု—စီထားသော အစီအစဥ်ကို ထိန်းသိမ်းထားခြင်းဖြင့်၊ ဆိုလိုသည်မှာ X[] ကို ပထမ m အငယ်ဆုံးဒြပ်စင်များနှင့်အတူ ပေါင်းပြီး Y[] ဖြင့် ဖြည့်ပါ။ ကျန်ဒြပ်စင်များ။
array X[] တွင် element တစ်ခုသည် မှန်ကန်သော အနေအထားတွင်ရှိပြီး (ဆိုလိုသည်မှာ ကျန်ရှိသောဒြပ်စင်များထဲတွင် အသေးငယ်ဆုံးဖြစ်သည်) ဆိုလျှင် ၎င်းကို မေ့ပစ်လိုက်ပါ။ မဟုတ်ပါက၊ ၎င်းကို Y[] ၏ ပထမဆုံးအဖွဲ့ဝင်ဖြစ်မည့် အသေးငယ်ဆုံးဒြပ်စင်ဖြင့် အစားထိုးပါ။ လဲလှယ်ပြီးနောက် စီထားသည့်အစီစဥ်ကို ဆက်လက်ထိန်းသိမ်းရန်၊ အစိတ်အပိုင်း (ယခု Y[0] တွင်) ကို Y[] ရှိ ၎င်း၏သင့်လျော်သောတည်နေရာသို့ လွှဲပြောင်းပါ။
ပထမ array ၏ အရွယ်အစားမှာ m ဖြစ်ပြီး ဒုတိယ array ၏ အရွယ်အစားမှာ n ဖြစ်ပြီး၊ time complexity မှာ O(mn) ဖြစ်သည်။
21. မြင့် နှင့် နိမ့်သော ရာထူးများ ဖြင့် ပစ္စည်း များ ၏ အခင်းအကျင်း ကို ဘယ်လို ပြန်စီမလဲ ။
နောက်ဆက်တွဲအဖွဲ့ဝင်တစ်ခုစီသည် ရှေ့နှင့်အောက်ပါဒြပ်စင်များထက် ပိုကြီးစေရန် ကိန်းပြည့်အခင်းတစ်ခုကို ပြန်လည်စီစဉ်ပါ။ array တွင် ပွားနေသည့်ဒြပ်စင်များ မပါဝင်ဟု ယူဆပါ။
ထိရောက်သောချဉ်းကပ်မှုတစ်ခုအတွက် array ကို စီခြင်း သို့မဟုတ် အပိုနေရာများကို အသုံးပြုရန် မလိုအပ်ပါ။ အစီအစဉ်သည် array ၏ဒုတိယအဖွဲ့ဝင်ဖြစ်ပြီး loop တစ်ခုစီတိုင်းအတွက် နှစ်ခုတက်သွားပါသည်။
နောက်ဆုံးဒြပ်စင်သည် ပထမတစ်ခုထက်ကျော်လွန်ပါက အစိတ်အပိုင်းများကို လဲလှယ်ပါ။ အောက်ပါဒြပ်စင်သည် လက်ရှိဒြပ်စင်ထက် ပိုကြီးပါက ဖိုင်နှစ်ခုလုံးကို ပြောင်းပါ။ ကွင်းဆက်၏နိဂုံးတွင် သတ်မှတ်ထားသော ကန့်သတ်ချက်များနှင့်အညီ လိုက်လျောညီထွေရှိသော လိုချင်သော array ကို ရယူပါမည်။
22. Array တစ်ခုစီ၏ ဒြပ်စင်တစ်ခုစီ၏ ထုတ်ကုန်တစ်ခုစီကို အပိုင်းခွဲအော်ပရေတာမသုံးဘဲ မည်ကဲ့သို့ အစားထိုးရမည်နည်း။
division operator ကိုမသုံးဘဲ၊ integer array တွင် element တစ်ခုစီကို အခြားသော element များအားလုံး၏ ရလဒ်ဖြင့် အစားထိုးပါ။
မျဉ်းနားအချိန်နှင့် ကိန်းသေနေရာများတွင်၊ ဤပြဿနာကိုဖြေရှင်းရန် ပြန်လှည့်ပတ်မှုကို ကျွန်ုပ်တို့အသုံးချနိုင်သည်။ လုပ်ဆောင်ချက်ပါရာမီတာများသည် သဘောတရားအဖြစ် ညာဘက် subarray အတွင်းရှိ ဒြပ်စင်တစ်ခုစီ၏ ထုတ်ကုန်များကို ထပ်ခါတလဲလဲ တွက်ချက်ပြီး ဘယ်ဘက် subarray ထုတ်ကုန်ကို ဖြတ်သန်းခြင်းသည် သဘောတရားဖြစ်သည်။
အချိန်ရှုပ်ထွေးမှုသည် O(n) ဖြစ်သည်။
23. logarithmic အချိန်အတွင်း array တစ်ခုရှိ အထူးဆန်းဆုံးဒြပ်စင်ကို ရှာပါ။
အဖွဲ့ဝင်တစ်ဦးမှလွဲ၍ အားလုံးကိန်းဂဏန်းများပါရှိသည့် ကိန်းပြည့် array တစ်ခုအား ပေး၍ ပြဿနာမှာ ဤဒြပ်စင်တစ်ခုပေါ်လာသည့်အကြိမ်အရေအတွက်ကို ဆုံးဖြတ်ရန်ဖြစ်သည်။ တူညီသောဒြပ်စင်များ array တွင်အတွဲများဖြစ်ပေါ်ပါက လော့ဂရစ်သမ်အချိန်နှင့် ကိန်းသေနေရာများတွင် ထူးဆန်းသောဖြစ်ပေါ်နေသောဒြပ်စင်ကိုရှာဖွေပြီး အတန်းတစ်ခုတွင်ပေးထားသည့်ဒြပ်စင်နှစ်ခုထက်ပို၍မဖြစ်နိုင်ပါ။
XOR လုပ်ဆောင်ချက်သည် ကျွန်ုပ်တို့အား linear time တွင် ဤပြဿနာကို ဖြေရှင်းနိုင်စေပါသည်။ ရည်ရွယ်ချက်မှာ array အတွင်းရှိ element တိုင်းကို XOR လုပ်ရန်ဖြစ်သည်။ ဖြစ်ပျက်နေသောဒြပ်စင်များသည် တစ်ခုနှင့်တစ်ခု ပျက်သွားပြီးနောက် ထူးဆန်းသော အရာများသာ ကျန်ရှိတော့သည်။
ဤပြဿနာကို O(log(n)) အချိန်အတွင်းပင် ဖြေရှင်းနိုင်ပါသည်။
24. စက်ဝိုင်းအခင်းတစ်ခုတွင် ဒြပ်စင်တစ်ခုစီအတွက် နောက်ဆက်တွဲပိုကြီးသောဒြပ်စင်ကို မည်သို့ရယူရမည်နည်း။
စက်ဝိုင်းရှိ ကိန်းပြည့်အခင်းတစ်ခုရှိ ဒြပ်စင်တစ်ခုစီအတွက် နောက်ထပ်ပိုကြီးသောဒြပ်စင်ကို ထားရှိသင့်သည်။ array ရှိ ဒြပ်စင် x ပြီးနောက် ပထမဆုံး ပိုကြီးသော ကိန်းပြည့်သည် ထိုဒြပ်စင်၏ နောက်ဆက်တွဲ ပိုကြီးသော ဒြပ်စင်ဖြစ်သည်။
ညာမှဘယ်မှ၊ ကျွန်ုပ်တို့သည် ခင်းကျင်းထားသော အရာများကို လုပ်ဆောင်နိုင်ပါသည်။ ပန်းတိုင်သည် အကွက်တစ်ခုစီကို ကွက်လပ်ဖြစ်နေသည့်တိုင်အောင် သို့မဟုတ် ၎င်း၏အပေါ်တွင် ပိုမြင့်သောဒြပ်စင်တစ်ခုစီရှိနေသည့်တိုင်အောင် x ဒြပ်စင်တစ်ခုစီအတွက် လှည့်ပတ်ရန်ဖြစ်သည်။ ၎င်းသည် stack ၏ထိပ်တွင် x ၏နောက်ထပ်ပိုကြီးသောဒြပ်စင်ကိုသတ်မှတ်ပါ။
25. array တစ်ခု၏ ပြောင်းပြန်လှန်ရေတွက်ကို ရှာပါ။
array တစ်ခု၏ ပြောင်းပြန်လှန်ခြင်း စုစုပေါင်း အရေအတွက်ကို ရှာပါ။ A pair I j) ကို array တစ်ခု၏ ပြောင်းပြန်လှန်ခြင်းကို ရည်ညွှန်းသည်ဆိုပါက I j) နှင့် (A[i] > A[j])။ array တွင် ဤအတွဲတိုင်းကို ရေတွက်ရပါမည်။
၎င်းထက်နည်းသော array အဖွဲ့ဝင်အားလုံးကို ရေတွက်ပြီး ရလဒ်ကို output သို့ထည့်ခြင်းသည် ရိုးရှင်းသောချဉ်းကပ်မှုတစ်ခုဖြစ်သည်။
ဤဖြေရှင်းချက်တွင် n သည် ထည့်သွင်းမှု၏အရွယ်အစားဖြစ်သည့် O(n2) ရှုပ်ထွေးမှုရှိသည်။
၂၆။ မိုးရေလှောင်ကန် ပြဿနာက ဘာလဲ။
တစ်ယူနစ်အကျယ်ရှိသော ဘားတန်းများအတွင်း ပိတ်မိနိုင်သော ရေအများဆုံးကို ရှာဖွေခြင်းကို "မိုးရေစက်များ" ပြဿနာဟုခေါ်သည်။
ပန်းတိုင်သည် ဘားတစ်ခုစီ၏ ဘယ်ညာတွင် ထားရှိနိုင်သည့် အမြင့်ဆုံးဘားကို ဆုံးဖြတ်ရန်ဖြစ်သည်။ ဘယ်ညာအနိမ့်ဆုံး၊ လက်ရှိဘား၏အမြင့်လျော့နည်းသည်၊ ဘားတစ်ခုစီ၏ထိပ်တွင် သိုလှောင်ထားသည့် ရေပမာဏဖြစ်သည်။
ကောက်ချက်
အခြားဒေတာဖွဲ့စည်းပုံအကြောင်းအရာများနှင့် နှိုင်းယှဉ်ပါက array များသည် ပိုမိုရိုးရှင်းပါသည်။ ace array အင်တာဗျူးမေးခွန်းများကိုဖြေဆိုရန်အတွက် array များကိုအခြေခံနားလည်ရန်လိုအပ်သည်။
array လုပ်ဆောင်ချက်များ (array တစ်ခုကို ကြေငြာခြင်း/ဖန်တီးခြင်းမှ array ကို ဝင်ရောက်ခြင်း/မွမ်းမံခြင်းအထိ) အပါအဝင် array ၏ အခြေခံများကို အကျယ်တဝင့် ပြန်လည်သုံးသပ်သင့်ပြီး array အင်တာဗျူးမေးခွန်းများကို အောင်မြင်စွာဖြေဆိုနိုင်ရန် အတွက် loops၊ recursion နှင့် basic operator များကဲ့သို့ programming concepts များကို လေ့လာသင့်ပါသည်။ ဒီကိစ္စကို လုံးဝသဘောပေါက်ပါ။
မေးမြန်းချက်များရှိပါက ရှင်းလင်းချက်ရှာသင့်ပါသည်။ ပြဿနာကို စီမံခန့်ခွဲနိုင်သော အပိုင်းများ ခွဲ၍ စဉ်းစားပါ။ ပရိုဂရမ်မစတင်မီ သင့်တွင် အယ်လဂိုရီသမ်ရှိရန် သေချာပါစေ။ ၎င်းကို ချရေးပါ သို့မဟုတ် အစီအစဥ်ဇယားတွင် မြင်ယောင်ကြည့်ပါ။ ထို့နောက် code ကိုစတင်ရေးသားပါ။
တစ်ဦးစာပြန်ရန် Leave