အတိုဆုံး Unsorted Continuous Subarray LeetCode ဖြေရှင်းချက်

Problem Statement တွင် အတိုဆုံး Unsorted Continuous Subarray LeetCode Solution မှ ပြောကြားသည်မှာ - ကိန်းပြည့် array နံပါတ်များကို ပေး၍ ဤ subarray ကို ငယ်စဉ်ကြီးလိုက် စီမည်ဆိုပါက၊ array တစ်ခုလုံးကို ငယ်စဉ်ကြီးလိုက် စီမည်ဟူသော စဉ်ဆက်မပြတ် subarray တစ်ခုကို ရှာရပါမည်။ အတိုဆုံး subarray ၏ အရှည်ကို ပြန်ပေးပါ။ ဥပမာ 1-…

ဆက်ဖတ်ရန်

Decode String Leetcode ဖြေရှင်းချက်

ပြဿနာဖော်ပြချက် Decode String LeetCode ဖြေရှင်းချက် – “Decode String” သည် သင့်အား ကုဒ်လုပ်ထားသော စာကြောင်းကို ကုဒ်လုပ်ထားသော စာကြောင်းအဖြစ်သို့ ပြောင်းလဲရန် တောင်းဆိုသည်။ ကုဒ်ဝှက်ခြင်းစည်းမျဉ်းသည် k[encoded_string] ဖြစ်ပြီး၊ လေးထောင့်ကွင်းစကွက်များအတွင်း ကုဒ်လုပ်ထားသော_စာကြောင်းကို k သည် အပြုသဘောဆောင်သော ကိန်းပြည့်ဖြစ်သည့် k အကြိမ်ကြိမ်တိတိ ထပ်ခါတလဲလဲလုပ်နေပါသည်။ ဥပမာ- ထည့်သွင်းခြင်း- s = ”3[a]2[bc]” အထွက်- “aabcbc”…

ဆက်ဖတ်ရန်

ချိတ်ဆက်ထားသောစာရင်း LeetCode ဖြေရှင်းချက်သို့ Flatten Binary Tree

ချိတ်ဆက်ထားသောစာရင်း LeetCode ဖြေရှင်းချက်သို့ Flatten Binary Tree ပေးသည် ဟုဆိုသည်။ root ဒွိစုံသစ်ပင်၏ “ချိတ်ဆက်ထားသောစာရင်း” အဖြစ် သစ်ပင်ကို ပြားချပ်စေသည်-

  • "လင့်ခ်ချိတ်ထားသောစာရင်း" သည် အလားတူအသုံးပြုသင့်သည်။ TreeNode အတန်းဘယ်မှာလဲ။ right ကလေးညွှန်ပြချက်သည် စာရင်းရှိ နောက် node ကို ညွှန်ပြသည်။ left ကလေးညွှန်းကိန်းသည် အမြဲတမ်းဖြစ်သည်။ null.
  • "လင့်ခ်ချိတ်ထားသောစာရင်း" သည် a ကဲ့သို့ အစဉ်လိုက်ရှိသင့်သည်။ ကြိုတင်မှာယူမှု ဖြတ်သန်း ဒွိသစ်ပင်၏။

 

ဥပမာအား 1:

ချိတ်ဆက်ထားသောစာရင်း LeetCode ဖြေရှင်းချက်သို့ Flatten Binary Treeinput:

 root = [1,2,5,3,4,null,6]

output:

 [1,null,2,null,3,null,4,null,5,null,6]

ဥပမာအား 2:

input:

 root = []

output:

 []

ဥပမာအား 3:

input:

 root = [0]

output:

 [0]

 

အယ်လ်ဂိုရစ်သမ် –

IDEA –

  • ဒွိသစ်ပင်တစ်ပင်ကို ပြားချပ်စေရန်အတွက်၊ ဘယ်ဘက်သစ်ပင်၏ ညာဘက်ဆုံးဒြပ်စင်ကို ဦးစွာရှာတွေ့မည်ဖြစ်ပြီး ညာဘက်ဆုံးဒြပ်စင်ကိုရပြီးနောက် ပေးထားသောသစ်ပင်၏ ညာဘက်အခွဲနှင့် ထိုနိတ်၏ညာဘက်ညွှန်သူကို ချိတ်ဆက်မည်ဖြစ်သည်။
  • အဆင့် 2 တွင်ကျွန်ုပ်တို့သည် root node ၏ညာဘက်ညွှန်ပြချက်ကိုဘယ်-subtree နှင့်ချိတ်ဆက်ပြီး left-subtree ကို null အဖြစ်သတ်မှတ်မည်ဖြစ်သည်။
  • ယခု အဆင့် 3 တွင် ကျွန်ုပ်တို့၏ root node သည် right-subtree node တစ်ခုဖြစ်ပြီး တူညီသောလုပ်ငန်းစဉ်သည် ဤ node နှင့်ဖြစ်သွားမည်ဖြစ်ပြီး၊ ဘယ်ဘက်အပိုင်းများအားလုံး null ဖြစ်သွားသည်အထိ လုပ်ငန်းစဉ်သည် ဆက်လက်ရှိနေမည်ဖြစ်သည်။

ချိတ်ဆက်ထားသောစာရင်း Leetcode ဖြေရှင်းချက်သို့ Flatten Binary Tree အတွက်ချဉ်းကပ်နည်း

– ပထမတော့၊ ငါ while(root != null) ဖြစ်တဲ့ loop တစ်ခုကို run မယ် ပြီးရင် variable နှစ်ခုကိုယူပြီး ဘယ်ဘက် subtree ကို သိမ်းမယ်။

- ထို့နောက် while(k.left != null) ကို အသုံးပြု၍ ဘယ်ဘက်အခွဲ၏ ညာဖက်အစွန်းကို စစ်ဆေးမည်ဖြစ်ပြီး (k.right = root.right) ကို အသုံးပြု၍ အဆိုပါ node နှင့် ညာဖက်အခွဲနှင့် ချိတ်ဆက်ပေးမည်ဖြစ်သည်။

- ထို့နောက် root node ၏ ညာဘက်ညွှန်ပြချက်ကို ဘယ်ဘက်အခွဲ(root.right=left) ဖြင့် လင့်ခ်ချိတ်ပြီး root node ၏ ဘယ်ဘက်ညွှန်ပြချက်ကို null(root.left=null) အဖြစ် သတ်မှတ်ပြီး ( root = root.right ) ဖြင့် အပ်ဒိတ်လုပ်မည်ဖြစ်သောကြောင့် ယခု root သည် မှန်ကန်ပါသည်။ subtree node များ။

- ဘယ်ဘက်-သစ်ပင် အစိတ်အပိုင်းများအားလုံး ညာဘက်သစ်ပင်ဖြစ်လာသည်အထိ ဤလုပ်ငန်းစဉ်ကို ဆက်လက်လုပ်ဆောင်ပါမည်။ ထို့ကြောင့် ဒွိစုံပင်သည် ပြားသွားလိမ့်မည်။

 

ချိတ်ဆက်ထားသောစာရင်း LeetCode ဖြေရှင်းချက်သို့ Flatten Binary Tree

ချိတ်ဆက်ထားသောစာရင်း LeetCode ဖြေရှင်းချက်သို့ Flatten Binary Tree

Python ဖြေရှင်းချက်-

class Solution:
    def flatten(self, root: Optional[TreeNode]) -> None:
        while(root):
            
            if root.left:
                
                k = root.left
                temp = root.left
            
            
                while(k.right):
                    k = k.right
            
                k.right = root.right
            
                root.right = temp
            
                root.left = None
            
            root = root.right

Java ဖြေရှင်းချက်-

class Solution {
    public void flatten(TreeNode root) {       
        while (root != null) {
            if (root.left != null) {
                TreeNode k = root.left;
                TreeNode temp = root.left;
                while (k.right != null) k = k.right;
                k.right = root.right;
                root.right = temp;
                root.left = null;
            }
            root = root.right;
        }
    }
}

အချိန်ရှုပ်ထွေးမှု- O(N)

အာကာသရှုပ်ထွေး: အို (1)

တစ်ကြိမ်သာ ဖြတ်ကျော်ပြီးသည်နှင့်အမျှ အချိန်၏ရှုပ်ထွေးမှုသည် o(n) ဖြစ်လိမ့်မည်။

အပိုနေရာမယူထားသောကြောင့်၊ space complexity သည် o(1) constant extra space ဖြစ်လိမ့်မည်။

အလားတူမေးခွန်း- https://www.tutorialcup.com/interview/linked-list/flattening-linked-list.htm

အကြွေစေ့ Leetcode ဖြေရှင်းချက်ကို စီစဉ်ခြင်း။

ပြဿနာဖော်ပြချက် The Arranging Coins LeetCode ဖြေရှင်းချက် - "ဒင်္ဂါးပြားများ စီစဉ်ပေးခြင်း" သည် သင့်အား ဤဒင်္ဂါးပြားများဖြင့် လှေကားထစ်တစ်ခုကို တည်ဆောက်ရန် တောင်းဆိုသည်။ လှေခါးတွင် k အတန်းများ ပါ၀င်ပြီး အတန်းတွင် i ဒင်္ဂါးများ အတိအကျ ပါဝင်ပါသည်။ လှေကား၏နောက်ဆုံးတန်းသည် ပြီးပြည့်စုံမည်မဟုတ်ပါ။ ပေးထားသော ဒင်္ဂါးပြားပမာဏအတွက် ပြန်ပေး...

ဆက်ဖတ်ရန်

နေ့စဥ်အပူချိန်များ Leetcode ဖြေရှင်းချက်

ပြဿနာထုတ်ပြန်ချက် The Daily Temperatures Leetcode ဖြေရှင်းချက်- ကိန်းပြည့်အပူချိန်များ ပေးထားသည့် ကိန်းပြည့်အပူချိန်များသည် နေ့စဉ်အပူချိန်ကို ကိုယ်စားပြုသည်၊ ထိုအဖြေကို ပြန်ပေးသည့် array အဖြေဖြစ်သည့် ထိုအဖြေသည် ပူနွေးသောနေ့ပြီးနောက် စောင့်ဆိုင်းရမည့် ရက်အရေအတွက်ဖြစ်သည်။ ဖြစ်နိုင်ချေရှိသော အနာဂတ်နေ့မရှိလျှင် အဖြေ[i] == 0 အစား ဆက်ထားပါ။ …

ဆက်ဖတ်ရန်

LRU Cache Leetcode ဖြေရှင်းချက်

ပြဿနာထုတ်ပြန်ချက် LRU Cache LeetCode ဖြေရှင်းချက် – “LRU Cache” သည် သင့်အား မကြာသေးမီက အသုံးပြုခဲ့သော အနည်းဆုံး (LRU) Cache နှင့် ကိုက်ညီသည့် ဒေတာဖွဲ့စည်းပုံတစ်ခုကို ဒီဇိုင်းဆွဲရန် တောင်းဆိုသည်၊ ကျွန်ုပ်တို့သည် အောက်ပါလုပ်ဆောင်ချက်များပါရှိသော LRUCache အတန်းအစားကို အကောင်အထည်ဖော်ရန် လိုအပ်သည်- LRUCache(စွမ်းရည်မရှိ): LRU ကက်ရှ်ကို စတင်လုပ်ဆောင်သည် အပြုသဘောဆောင်သောအရွယ်အစားစွမ်းရည်နှင့်အတူ။ int get(int key)- တန်ဖိုးကို ပြန်ပေးပါ...

ဆက်ဖတ်ရန်

မှန်ကန်သော စကားချပ် LeetCode ဖြေရှင်းချက်ကို ပြုလုပ်ရန် အနည်းဆုံး ဖယ်ရှားပါ။

Problem Statement မှန်ကန်သော စကားချပ် LeetCode ဖြေရှင်းချက်ကို ပြုလုပ်ရန် အနည်းဆုံး ဖယ်ရှားခြင်း - သင့်အား '(', ')' နှင့် စာလုံးအသေး အင်္ဂလိပ် စာလုံးများကို ပေးထားသည်။ သင့်တာဝန်မှာ ကွင်းစကွင်းပိတ်နံပါတ် ('(' သို့မဟုတ် ')'၊ မည်သည့်ရာထူးတွင်မဆို ) မှ ရလဒ်ထွက်ရှိသော ကွင်းစည်းစာကြောင်းကို ဖယ်ရှားရန်ဖြစ်သည်။

ဆက်ဖတ်ရန်

အထပ်ထပ်စာလုံးများမပါသော အရှည်ဆုံးစာကြောင်းခွဲ

Problem Statement The string s ကို ပေးထားသည့် စာလုံးများ ထပ်ကျော့ခြင်းမရှိဘဲ အရှည်ဆုံး စာကြောင်း LeetCode ဖြေရှင်းချက် - ဖော်ပြသည်။ အက္ခရာထပ်ခြင်းမပြုဘဲ အရှည်ဆုံးစာတန်းခွဲကို ရှာရန် လိုအပ်သည်။ ဥပမာ- ထည့်သွင်းခြင်း- s = ”abcabcbb” အထွက်- 3 ရှင်းလင်းချက်- ထပ်ခါတလဲလဲ စာလုံးမရှိသော အရှည်ဆုံးစာတန်းသည် အရှည် 3 ဖြစ်သည်။ စာကြောင်းမှာ- “abc” ဖြစ်သည်။ ထည့်သွင်းခြင်း- s = ”bbbb”…

ဆက်ဖတ်ရန်

Clone Graph LeetCode ဖြေရှင်းချက်

Problem Statement Clone Graph LeetCode ဖြေရှင်းချက် - ကျွန်ုပ်တို့သည် ချိတ်ဆက်ထားသော လမ်းကြောင်းမရှိသော ဂရပ်တစ်ခုရှိ node တစ်ခု၏ အကိုးအကားကို ရရှိထားပြီး ဂရပ်၏ နက်နဲသောကော်ပီကို ပြန်ပေးရန် တောင်းဆိုထားသည်။ နက်ရှိုင်းသောမိတ္တူသည် အခြေခံအားဖြင့် နက်ရှိုင်းသောကော်ပီတွင် အကိုးအကားမရှိသင့်သော ကလိုနီတစ်ခုဖြစ်သည်။

ဆက်ဖတ်ရန်

မှန်ကန်သော စကားချပ် Leetcode ဖြေရှင်းချက်

ပြဿနာ ထုတ်ပြန်ချက် မှန်ကန်သော စကားချပ် LeetCode ဖြေရှင်းချက် – “မှန်ကန်သော စကားချပ်များ” က သင့်အား '('၊ ')'၊ '{'၊ '}', '[' နှင့် ']' ဟူသော စာလုံးများသာ ပါဝင်သော စာတန်းတစ်ခုကို သင့်အား ပေးထားကြောင်း ဖော်ပြထားသည်။ ထည့်သွင်းသည့်စာကြောင်းသည် တရားဝင်စာကြောင်းဟုတ်မဟုတ် ဆုံးဖြတ်ရန် လိုအပ်သည်။ ဖွင့်ကွင်းပိတ်ရမည်ဆိုပါက စာကြောင်းတစ်ခုအား တရားဝင်စာကြောင်းဟု ဆိုသည်...

ဆက်ဖတ်ရန်

Translate »