Gilt þríhyrningsnúmer LeetCode lausn

Vandamálsyfirlýsing: Gild þríhyrningstala LeetCode Lausn segir - Gefið heiltölu fylki, skilaðu fjölda þríhyrninga sem valdir eru úr fylkinu sem geta búið til þríhyrninga ef við tökum þá sem hliðarlengdir á þríhyrningi. Dæmi 1: Inntak: tölur = [2,2,3,4] Úttak: 3 Skýring: Gildar samsetningar eru: 2,3,4 (með því að nota …

Lesa meira

Stysta óflokkaða samfellda undirfylki LeetCode lausn

Vandamálsyfirlýsing Shortest Unsorted Continuous Subarray LeetCode Lausnin segir að - Gefið heiltölu fylki num, þú verður að finna eina samfellda undirfylki sem ef þú flokkar aðeins þessa undirfylki í hækkandi röð, þá verður allt fylkið raðað í hækkandi röð. Skilaðu lengd stystu undirfylkis. Dæmi 1: …

Lesa meira

Rétthyrningur skarast LeetCode lausn

Vandamál: Rétthyrningur skarast LeetCode Lausn – segir að ásjafnaður rétthyrningur sé sýndur sem listi, [x1, y1, x2, y2], þar sem (x1, y1) er hnit neðra vinstra hornsins og (x2) , y2) er hnit efst í hægra horninu. Efri og neðri brúnir þess eru samsíða X-ásnum og vinstri …

Lesa meira

Er Graph tvíhliða? LeetCode lausn

Vandamálsyfirlýsing er graf tvíhliða LeetCode lausn- Það er óstýrt línurit með n hnútum, þar sem hver hnút er númeraður á milli 0 og n – 1. Þú færð 2D fylkisgraf, þar sem graf[u] er fylki hnúta sem hnútur u. er við hlið. Meira formlega, fyrir hvert v í línuriti[u], er óstýrð brún á milli hnút u og hnút v. Grafið hefur …

Lesa meira

Hönnun Bæta við og leita að orðum Gagnauppbygging LeetCode lausn

Vandamál: Hönnun Bæta við og leita að orðum Gagnauppbygging LeetCode Lausn segir - Hannaðu gagnaskipulag sem styður við að bæta við nýjum orðum og finna hvort strengur passar við einhvern áður bættan streng. Innleiða WordDictionary flokkinn: WordDictionary() Frumstillir hlutinn. void addWord(word) Bætir orði við gagnaskipulagið, það er hægt að passa það síðar. bool leit(orð) Skilar satt ef það er…

Lesa meira

Lágmarks Path Summa Leetcode lausn

Vandamálsyfirlýsing Lágmarksleiðarsumman LeetCode Lausn - „Lágmarksleiðarsumma“ segir að gefið anxm rist sem samanstendur af óneikvæðum heiltölum og við þurfum að finna leið frá efst til vinstri til neðst til hægri, sem lágmarkar summan af öllum tölum á leiðinni . Við getum aðeins flutt…

Lesa meira

Lágmarkskostnaður klifurstiga LeetCode lausn

Vandamálsyfirlýsing Lágmarkskostnaður við að klifra stiga LeetCode Lausn – Gefinn er upp heiltölufylkiskostnaður, þar sem kostnaður[i] er kostnaður við þrep á stiga. Þegar þú hefur borgað kostnaðinn geturðu annað hvort klifrað eitt eða tvö þrep. Þú getur annað hvort byrjað á skrefinu með vísitölu 0, eða skrefinu með ...

Lesa meira

Afkóða streng Leetcode lausn

Vandamálsyfirlýsing Afkóðastrengurinn LeetCode Lausnin – „Afkóðastrengur“ biður þig um að umbreyta kóðaða strengnum í afkóðaðan streng. Kóðunarreglan er k[kóðaður_strengur], þar sem kóðaði_strengurinn innan hornklofa er endurtekinn nákvæmlega k sinnum þar sem k er jákvæð heil tala. Dæmi: Inntak: s = ”3[a]2[bc]” Úttak: “aaabcbc” …

Lesa meira

Fjöldi undirraðir sem uppfyllir tiltekið summa skilyrði LeetCode lausn

Vandamálsyfirlýsing Fjöldi undirraða sem fullnægja gefnu summuskilyrði LeetCode lausn – segir að Gefið fylki heiltalna tölur og heiltölumarkmið. Skilaðu fjölda ótómra undirröðunarnúmera þannig að summan af lágmarks- og hámarksþáttinum á honum sé minni eða jöfn markmiði. Þar sem svarið gæti verið of…

Lesa meira

Flettu tvöfalda tré við tengda lista LeetCode lausn

Flettu tvöfalda tré við tengda lista LeetCode lausn segir að - Í ljósi þess root af tvíundartré, flettu tréð út í „tengdan lista“:

  • „Tengdi listinn“ ætti að nota það sama TreeNode bekk þar sem right barnabendill bendir á næsta hnút á listanum og left barn bendill er alltaf null.
  • „Tengdi listinn“ ætti að vera í sömu röð og a Pre-röð yfirferð af tvíundartrénu.

 

Dæmi 1:

Flettu tvöfalda tré við tengda lista LeetCode lausninntak:

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

Output:

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

Dæmi 2:

inntak:

 root = []

Output:

 []

Dæmi 3:

inntak:

 root = [0]

Output:

 [0]

 

ALGÓRITIMA -

HUGMYND -

  • Til þess að fletja út tvöfalda tré, finnum við fyrst hægra megin í vinstra undirtrénu og eftir að við höfum náð hæsta stakinu munum við tengja hægri bendilinn þess hnúts við hægri undirtré tiltekins trés.
  • Í skrefi 2 munum við tengja hægri bendilinn á rótarhnútnum við vinstri undirtréð og stilla vinstri undirtréð sem núll.
  • Í skrefi 3 er nú rótarhnúturinn okkar hægri undirtréshnútur, sama ferli mun gerast með þessum hnút og ferlið heldur áfram þar til allir vinstri hlutar verða að engu.

Aðferð til að fletja tvöfalda tré við Leetcode lausn á tengdum lista -

– Í fyrstu mun ég keyra lykkju þ.e. while(rót != null) þá mun ég taka tvær breytur og geyma vinstri undirtréð.

– mun þá athuga hvort hnúturinn sé lengst til hægri í vinstri undirtré með því að nota while(k.left != null) og mun tengja þann hnút við hægri undirtré með því að nota (k.right = root.right).

– tengdu síðan hægri bendilinn á rótarhnút við vinstri undirtré (root.right = vinstri) og stilltu vinstri bendilinn á rótarhnút sem null(root.left=null) og mun uppfæra með (rót = root.right ) þannig að nú er rót rétt undirtré hnút.

– þetta ferli mun halda áfram þar til allir vinstri undirtré hlutar verða hægri undirtré. Þess vegna mun tvíundartréð fletjast út.

 

Flettu tvöfalda tré við tengda lista LeetCode lausn

Flettu tvöfalda tré við tengda lista LeetCode lausn

Python lausn:

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 lausn:

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;
        }
    }
}

Tímaflæki: O(N)

Rýmisflókið: O (1)

Þar sem við höfum farið aðeins einu sinni yfir verður tímaflækjustigið o(n).

og þar sem við höfum ekki tekið neitt aukapláss verður flókið rými o(1) stöðugt aukarými.

Svipuð spurning - https://www.tutorialcup.com/interview/linked-list/flattening-linked-list.htm

Translate »