Count Sub Islands LeetCode шешімі

Мәселе туралы мәлімдеме Count Sub Islands LeetCode Solution тор1 және тор2 тек 0 (суды білдіретін) және 1 (жерді білдіретін) бар екенін айтады. Арал 1 бағытта жалғанған 4 тобын білдіреді. Тор 2-де … жасайтын барлық ұяшықтарды қамтитын арал болса, 1-тордағы арал қосалқы арал болып саналады.

Ары қарай оқу

Екілік ағаш LeetCode шешімінің тік ретті өтуі

Мәселе мәлімдемесі Екілік ағаштың тік ретті өтуі LeetCode Solution былай дейді: Екілік ағаштың түбірін ескере отырып, екілік ағаштың тік ретті өтуін есептеңіз. Позициядағы (жол, колонка) әрбір түйін үшін оның сол және оң жақ еншілестері сәйкесінше (жол + 1, кол – 1) және (жол + 1, кол + 1) позицияларында болады. …

Ары қарай оқу

Түбірді жапырақ сандарына қосу LeetCode шешімі

Мәселе мәлімдемесі Түбірден жапырақ сандарына қосынды LeetCode шешімі былай дейді: – Сізге тек 0-ден 9-ға дейінгі сандарды қамтитын екілік ағаштың түбірі беріледі. Ағаштағы әрбір тамырдан жапыраққа дейінгі жол санды білдіреді. Мысалы, түбірден жапыраққа жол 1 -> 2 -> 3 123 санын білдіреді. Барлық түбірден жапыраққа дейінгі сандардың жалпы сомасын қайтарыңыз. Сынақ…

Ары қарай оқу

Екілік ағаштың ретімен өтуі LeetCode шешімі

Мәселе туралы мәлімдеме: Екілік ағаштың ретімен өтуі LeetCode шешімі Екілік ағаштың түбірін ескере отырып, оның түйіндерінің мәндерінің ретімен өтуін қайтарыңыз. 1-мысал: Енгізу: root = [1,null,2,3] Шығару: [1,3,2] 2-мысал: Кіріс: root = [] Шығу: [] 3-мысал: Кіріс: root = [1] Шығыс: [1] Шектеулер: ... ішіндегі түйіндер саны

Ары қарай оқу

График екі жақты ма? LeetCode шешімі

Мәселе мәлімдемесі – екі жақты LeetCode шешімі – n түйіні бар бағытталмаған график бар, мұнда әрбір түйін 0 және n – 1 аралығында нөмірленеді. Сізге 2D жиым графигі берілген, мұндағы graph[u] – u түйінін түйіндейтін түйіндердің жиымы. іргелес орналасқан. Ресми түрде, [u] графындағы әрбір v үшін u түйіні мен v түйіні арасында бағытталмаған жиек бар. Графикте ...

Ары қарай оқу

Жобалау Сөздерді қосу және іздеу деректер құрылымы LeetCode шешімі

Мәселе туралы мәлімдеме: Сөздерді қосу және іздеу деректер құрылымын жобалау LeetCode шешімі былай дейді: Жаңа сөздерді қосуды және жолдың бұрын қосылған кез келген жолға сәйкес келетінін анықтауды қолдайтын деректер құрылымын құрастырыңыз. WordDictionary класын іске асыру: WordDictionary() Нысанды инициализациялайды. void addWord(word) Деректер құрылымына сөз қосады, оны кейінірек сәйкестендіруге болады. bool іздеу(сөз) егер бар болса, шын мәнін қайтарады ...

Ары қарай оқу

Екілік ағашты байланыстырылған тізімге тегістеңіз LeetCode шешімі

Екілік ағашты байланыстырылған тізімге тегістеңіз LeetCode шешімі былай дейді – ескере отырып root екілік ағаштың, ағашты «байланыстырылған тізімге» тегістеңіз:

  • «Байланыстырылған тізім» бірдей қолданылуы керек TreeNode сынып қайда right еншілес көрсеткіш тізімдегі келесі түйінді көрсетеді және left бала көрсеткіші әрқашан null.
  • «Байланыстырылған тізім» келесімен бірдей тәртіпте болуы керек алдын ала берілетін тапсырыс көлденең екілік ағаштан.

 

Мысал 1:

Екілік ағашты байланыстырылған тізімге тегістеңіз LeetCode шешіміКіру:

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

Шығару:

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

Мысал 2:

Кіру:

 root = []

Шығару:

 []

Мысал 3:

Кіру:

 root = [0]

Шығару:

 [0]

 

АЛГОРИТМ –

ИДЕЯ –

  • Екілік ағашты тегістеу үшін алдымен сол жақ ішкі ағаштың оң жақ элементін табамыз және ең оң жақ элементті алғаннан кейін сол түйіннің оң жақ көрсеткішін берілген ағаштың оң жақ ішкі ағашымен байланыстырамыз.
  • 2-қадамда біз түбірлік түйіннің оң жақ көрсеткішін сол жақ ішкі ағашпен байланыстырамыз және сол жақ ішкі ағашты нөл ретінде орнатамыз.
  • 3-қадамда енді біздің түбір түйініміз оң жақтағы ішкі ағаш түйіні. Дәл сол процесс осы түйінмен орындалады және барлық сол жақ бөліктер нөлге айналғанша процесс жалғаса береді.

Екілік ағашты байланыстырылған тізімге тегістеу әдісі Leetcode шешімі –

– Алдымен циклды іске қосамын, яғни while(root != null) содан кейін екі айнымалыны алып, сол жақтағы ішкі ағашты сақтаймын.

– содан кейін while(k.left != null) көмегімен сол жақтағы ішкі ағаштың ең оң жақ түйінін тексереді және сол түйінді оң жақтағы ішкі ағашпен байланыстырады (k.right = root.right).

– содан кейін түбірлік түйіннің оң жақ көрсеткішін сол ішкі ағашпен байланыстырыңыз (root.right = left) және түбірлік түйіннің сол жақ көрсеткішін null (root.left=null) етіп орнатыңыз және ( root = root.right ) арқылы жаңартылады, сондықтан енді түбір дұрыс. ішкі ағаш түйіні.

– бұл процесс барлық сол жақтағы ішкі ағаш бөліктері оң жақ ішкі ағаш болғанша жалғасады. Осылайша, екілік ағаш тегістеледі.

 

Екілік ағашты байланыстырылған тізімге тегістеңіз LeetCode шешімі

Екілік ағашты байланыстырылған тізімге тегістеңіз LeetCode шешімі

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)

Ғарыштың күрделілігі: O (1)

Біз тек бір рет жүріп өткендіктен, уақыт күрделілігі o(n) болады.

және біз ешқандай қосымша орын алмағандықтан, кеңістіктің күрделілігі o(1) тұрақты қосымша кеңістік болады.

Ұқсас сұрақ – https://www.tutorialcup.com/interview/linked-list/flattening-linked-list.htm

N-Ary ағашының диаметрі LeetCode шешімі

Мәселе туралы мәлімдеме: N-Ary ағашының диаметрі LeetCode шешімі – N-ary ағашының түбірін ескере отырып, ағаштың диаметрінің ұзындығын есептеу керек. N-ary ағашының диаметрі - ағаштың кез келген екі түйіні арасындағы ең ұзын жолдың ұзындығы. Бұл жол болуы мүмкін немесе болмауы мүмкін ...

Ары қарай оқу

Екілік ағаштың ең төменгі ортақ ата-бабасы Leetcode шешімі

Мәселе туралы мәлімдеме Екілік ағаштың ең төменгі ортақ атасы LeetCode шешімі – «Екілік ағаштың ең төменгі ортақ атасы» екілік ағаштың түбірі мен ағаштың екі түйіні берілгенін айтады. Осы екі түйіннің ең төменгі ортақ атасын табуымыз керек. Ең аз таралған…

Ары қарай оқу

Әрбір түйін Leetcode шешімінде келесі оң жақ көрсеткіштерді толтыру

Мәселе туралы мәлімдеме Әрбір түйінде келесі оң жақ меңзерлерді толтыру LeetCode шешімі – «Әр түйінде келесі оң жақ меңзерлерді толтыру» тамаша екілік ағаштың түбірі берілгенін және түйіннің әрбір келесі көрсеткішін оның келесі оң түйініне толтыру керектігін айтады. Келесісі болмаса…

Ары қарай оқу

Translate »