စကားချပ် LeetCode ဖြေရှင်းချက်၏ ရမှတ်

Problem Statement ကွင်းပိတ် LeetCode ဖြေရှင်းချက်၏ ရမှတ်က - မျှတသော ကွင်းပိတ် string ကို ပေး၍ အများဆုံးရမှတ်ကို ပြန်ပေးသည်။ ဟန်ချက်ညီသော စကားချပ်ကြိုးတစ်ချောင်း၏ ရမှတ်သည် အောက်ပါစည်းမျဉ်းများပေါ်တွင် အခြေခံသည်- “()” တွင် ရမှတ် 1 ရှိသည်။ AB တွင် ရမှတ် A+B ရှိပြီး A နှင့် B သည် ဟန်ချက်ညီသော စကားချပ်ကြိုးများဖြစ်သည်။ (A) ရမှတ် 2*A ရှိပြီး A သည်...

ဆက်ဖတ်ရန်

Binary Tree Inorder Traversal LeetCode ဖြေရှင်းချက်

ပြဿနာဖော်ပြချက်- Binary Tree Inorder Traversal LeetCode ဖြေရှင်းချက် binary tree ၏ အမြစ်ကို ပေးထားသည့်အတွက်၊ ၎င်း၏ nodes များ၏ တန်ဖိုးများ အစီအစဥ်ဖြတ်ကျော်မှုကို ပြန်ပေးသည်။ ဥပမာ 1- ထည့်သွင်းမှု- root = [1,null,2,3] အထွက်- [1,3,2] နမူနာ 2- ထည့်သွင်းမှု- root = [] အထွက်- [] ဥပမာ 3- ထည့်သွင်းမှု- root = [1] အထွက်- [1] ကန့်သတ်ချက်များ- အတွင်းရှိ node အရေအတွက်...

ဆက်ဖတ်ရန်

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

နံပါတ်နှစ်ခု II Leetcode ဖြေရှင်းချက်ကို ထည့်ပါ။

ပြဿနာဖော်ပြချက် Add Two Numbers II LeetCode ဖြေရှင်းချက် – “Add Two Numbers II” သည် အချည်းနှီးမဟုတ်သော လင့်ခ်များစာရင်းနှစ်ခုသည် အထင်ရှားဆုံးဂဏန်းကို ပထမဆုံးရရှိသည့် အနုတ်မဟုတ်သော ကိန်းပြည့်နှစ်ခုကို ကိုယ်စားပြုပြီး node တစ်ခုစီတွင် ဂဏန်းအတိအကျပါရှိသည်။ ဂဏန်းနှစ်လုံးကို ပေါင်းပြီး ပေါင်းလဒ်ကို ပြန်ပေးရမယ်...

ဆက်ဖတ်ရန်

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

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

ဆက်ဖတ်ရန်

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

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

ဆက်ဖတ်ရန်

မိုးရေ လျှို့ဝှက်ကုတ်ဖြေရှင်းချက်

ပြဿနာထုတ်ပြန်ချက် The Traping Rain Water LeetCode Solution – “Trapping Rain Water” သည် အမြင့်မြေပုံတစ်ခုစီကို ကိုယ်စားပြုသည့် အခင်းအကျင်းတစ်ခုကို ပေးထားသည့် အမြင့်ပေတစ်ခုစီကို ဖော်ပြသည်။ ဘားတစ်ခုစီ၏အကျယ်သည် 1 ဖြစ်သည်။ မိုးရွာပြီးနောက် ပိတ်မိသောရေပမာဏကို ရှာဖွေရန် လိုအပ်ပါသည်။ ဥပမာ- ထည့်သွင်းမှု- အမြင့် = [0,1,0,2,1,0,1,3,2,1,2,1] Output- 6 ရှင်းလင်းချက်- စစ်ဆေးရန်...

ဆက်ဖတ်ရန်

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

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

ဆက်ဖတ်ရန်

အများဆုံးအကြိမ်ရေ Stack Leetcode ဖြေရှင်းချက်

ပြဿနာဖော်ပြချက် Maximum Frequency Stack LeetCode ဖြေရှင်းချက် – "Maximum Frequency Stack" သည် stack မှဒြပ်စင်တစ်ခုအား ကျွန်ုပ်တို့တွေ့ရှိသည့်အခါတိုင်း၊ ၎င်းသည် stack တွင်ရှိနေသော မကြာခဏဒြပ်စင်ကို ပြန်ပေးသင့်သည့် ကြိမ်နှုန်းအစုအစည်းတစ်ခုကို ဒီဇိုင်းရေးဆွဲရန် တောင်းဆိုထားသည်။ FreqStack အတန်းကို အကောင်အထည်ဖော်ပါ- FreqStack() သည် အချည်းနှီးသော ကြိမ်နှုန်းအတွဲတစ်ခုကို တည်ဆောက်သည်။ void push(int val) တွန်းသည်...

ဆက်ဖတ်ရန်

Translate »