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 အရေအတွက်...

ဆက်ဖတ်ရန်

အနည်းဆုံး Path Sum Leetcode ဖြေရှင်းချက်

Problem Statement The Minimum Path Sum LeetCode Solution – "Minimum Path Sum" သည် ပေးထားသော anxm grid တွင် အနုတ်လက္ခဏာမဟုတ်သော ကိန်းပြည့်များပါ၀င်ကြောင်းပြောပြီး လမ်းကြောင်းတစ်လျှောက်ရှိ ဂဏန်းများအားလုံး၏ပေါင်းလဒ်ကို နည်းပါးသွားစေမည့် လမ်းကြောင်းကို အပေါ်မှလက်ဝဲမှ ညာဘက်အောက်သို့ ရှာရန် လိုအပ်ပါသည်။ . ငါတို့သာ လှုပ်ရှားနိုင်တယ်...

ဆက်ဖတ်ရန်

Min Cost Climbing Stairs LeetCode Solution

ပြဿနာ ထုတ်ပြန်ချက် အနည်းဆုံး လှေကားတက်ခြင်း ကုန်ကျစရိတ် LeetCode ဖြေရှင်းချက် - ကုန်ကျစရိတ် [i] သည် လှေကားပေါ်တက်ခြင်း၏ ကုန်ကျစရိတ်ဖြစ်ပြီး ကိန်းပြည့်အခင်းကုန်ကျစရိတ်ကို ပေးပါသည်။ ကုန်ကျစရိတ် ပေးချေပြီးသည်နှင့် တစ်လှမ်း သို့မဟုတ် နှစ်လှမ်းတက်နိုင်သည်။ အညွှန်း 0 ဖြင့် အဆင့်မှ စတင်နိုင်သည် သို့မဟုတ် အဆင့်ဖြင့် ...

ဆက်ဖတ်ရန်

ချိတ်ဆက်ထားသောစာရင်း 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

GetRandom O(1) Leetcode ဖြေရှင်းချက်ကို ဖျက်ရန် ထည့်သွင်းပါ။

ပြဿနာဖော်ပြချက် GetRandom O(1) LeetCode ဖြေရှင်းချက် - "Insert Delete GetRandom O(1)" သည် သင့်အား O(1) အချိန်ရှုပ်ထွေးမှုတွင် ဤလုပ်ဆောင်ချက်လေးခုကို အကောင်အထည်ဖေါ်ရန် တောင်းဆိုပါသည်။ insert(val)- val ကို ကျပန်းသတ်မှတ်ထားသော set ထဲသို့ထည့်ကာ set တွင် element သည် အစပိုင်းတွင် ပျက်ကွက်ပါက true ပြန်ပေးပါ။ ၎င်းသည် မှားယွင်းသောအခါတွင် ပြန်လာသည်...

ဆက်ဖတ်ရန်

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”…

ဆက်ဖတ်ရန်

Fibonacci နံပါတ် LeetCode ဖြေရှင်းချက်

Problem Statement Fibonacci Number LeetCode ဖြေရှင်းချက် – “Fibonacci Number” သည် အများအားဖြင့် F(n) ကိုရည်ညွှန်းသော Fibonacci နံပါတ်များဖြစ်သည့် Fibonacci sequence ဟုခေါ်သော အစီအစဥ်တစ်ခုစီသည် နံပါတ်တစ်ခုစီသည် 0 နှင့် 1 မှစတင်၍ ရှေ့နှစ်ခု၏ပေါင်းလဒ်ဖြစ်သည်၊ ဆိုလိုသည်မှာ F(0) = 0၊ F(1) = 1 F(n) = F(n – 1) + F(n…

ဆက်ဖတ်ရန်

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

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

ဆက်ဖတ်ရန်

Translate »