Řešení Continuous Subarray Sum LeetCode

Prohlášení problému Souvislý součet dílčích polí LeetCode Řešení – Vzhledem k celočíselnému poli nums a celému číslu k vrátí hodnotu true, pokud má nums spojité podpole o velikosti alespoň dva, jejichž součet prvků je násobkem k, nebo v opačném případě nepravda. Celé číslo x je násobkem k, pokud existuje celé číslo n takové, že x = n * k. 0 je vždy…

Dozvědět se více

Top K Frequent Elements Řešení LeetCode

Problémové prohlášení Nahoru K Časté prvky Řešení LeetCode říká, že – Vzhledem k celočíselnému poli nums a celému číslu k vrátí k nejčastějších prvků. Odpověď můžete vrátit v libovolném pořadí. Příklad 1: Vstup: nums = [1,1,1,2,2,3], k = 2 Výstup: [1,2] Příklad 2: Vstup: nums = [1], k = 1 Výstup: [1] …

Dozvědět se více

Nejkratší netříděné kontinuální řešení Subarray LeetCode

Problémové prohlášení Nejkratší netříděné spojité podpole LeetCode Solution říká, že – Vzhledem k počtu čísel celočíselného pole musíte najít jedno souvislé podpole, které pokud seřadíte pouze toto podpole ve vzestupném pořadí, bude seřazeno vzestupně celé pole. Vraťte délku nejkratšího podpole. Příklad 1: …

Dozvědět se více

Řešení LeetCode součet odmocnin k listům

Problémové prohlášení Odmocnina součtu k číslům listu Řešení LeetCode říká – Je vám dán kořen binárního stromu obsahující pouze číslice od 0 do 9. Každá cesta od kořene k listu ve stromu představuje číslo. Například cesta od kořene k listu 1 -> 2 -> 3 představuje číslo 123. Vrátí celkový součet všech čísel odmocninového listu. Test …

Dozvědět se více

Skóre řešení LeetCode závorek

Problémové prohlášení Skóre Parenthesis LeetCode Solution říká – Při vyvážených závorkách řetězec s a vrátí maximální skóre. Skóre řetězce vyvážených závorek je založeno na následujících pravidlech: „()“ má skóre 1. AB má skóre A + B, kde A a B jsou řetězce vyvážených závorek. (A) má skóre 2 * A, kde A je …

Dozvědět se více

Řešení LeetCode s překrytím obdélníku

Problémové prohlášení: Překrytí obdélníku Řešení LeetCode – říká, že osově zarovnaný obdélník je reprezentován jako seznam [x1, y1, x2, y2], kde (x1, y1) je souřadnice jeho levého dolního rohu a (x2 , y2) je souřadnice jeho pravého horního rohu. Jeho horní a spodní okraj jsou rovnoběžné s osou X a jeho levá…

Dozvědět se více

Maximální počet obyvatel Rok řešení LeetCode

Problémové prohlášení

Maximální počet obyvatel Rok řešení LeetCode říká, že – Dostanete 2D celočíselné pole logs kde každý logs[i] = [birthi, deathi] označuje rok narození a úmrtí ith osoba.

Projekt populace nějakého roku x je počet lidí naživu během daného roku. The ith osoba se počítá v roce x's populace if x je v včetně rozsah [birthi, deathi - 1]. Všimněte si, že osoba je ne počítáno v roce, kdy zemřou.

Návrat Rok s maximálním počtem obyvatel.

 

Příklad 1:

Vstup:

 logs = [[1993,1999],[2000,2010]]

Výstup:

 1993

Vysvětlení:

 The maximum population is 1, and 1993 is the earliest year with this population.

Příklad 2:

Vstup:

 logs = [[1950,1961],[1960,1971],[1970,1981]]

Výstup:

 1960

Vysvětlení:

 
The maximum population is 2, and it had happened in years 1960 and 1970.
So the maximum population year is 1960.

 

Omezení:

  • 1 <= logs.length <= 100
  • 1950 <= birthi < deathi <= 2050

 

ALGORITHM –

  • Chcete-li najít rok maximálního počtu obyvatel. Nejprve se zaměříme na celkový počet obyvatel v každém roce tak, že zkontrolujeme každý interval dané matice a najdeme maximální počet a vrátíme rok maximální hodnoty. Pokud je počet stejný, jednoduše vrátíme předchozí rok (nejstarší rok).

Přístup pro maximální počet obyvatel Rok řešení LeetCode

– Nejprve vytvoříme jedno pole o velikosti 101, protože omezení let leží v rozmezí 1950 až 2050.

– poté spustíme cyklus od 0 do délky log a zvýšíme počet pole na indexu(logs[i][o]) o 1 a snížíme počet pole na indexu (logs[i ][1]) od 1

– opět spustíme cyklus od 0 do délky pole a započítáme jednu proměnnou prev a aktualizujeme každý prvek pole pomocí array+prev a update prev pomocí prev = array[i].

– konečně spustíme smyčku a najdeme maximální hodnotu v poli a vrátíme tento konkrétní index (index+1950). Najděte tedy maximální počet obyvatel v roce.

Maximální počet obyvatel Rok řešení Leetcode

Kód:

Maximální rok populace Řešení Python Leetcode:

class Solution:
    def maximumPopulation(self, logs: List[List[int]]) -> int:
        arr = [0]*101
        for i in range(len(logs)):
            
            arr[logs[i][0]-1950] += 1
            
            arr[logs[i][1]-1950] -= 1
            
        
        previous = arr[0]
        for i in range(1,101):
            arr[i] += previous
            previous = arr[i]
            
        print(arr)
        maxi = 0
        ind = 0
        
        for i in range(len(arr)):
            if arr[i] > maxi:
                maxi = arr[i]
                ind = i + 1950
        print(maxi)        
        return ind

Maximální rok populace Řešení Java Leetcode:

class Solution {
    public int maximumPopulation(int[][] logs) {
        
        int[] arr = new int[101];
        for(int i = 0;i < logs.length;i++){
            
            arr[logs[i][0]-1950] +=1;
            arr[logs[i][1]-1950] -=1;
            
            
        }
        
        int prev = arr[0];
        for(int i=1;i<arr.length;i++){
            
            arr[i] += prev;
            prev = arr[i];
            
        }
        
        int ind = 0;
        int maxi = 0;
        
        for(int i=0;i<arr.length;i++){
            
            if(maxi < arr[i]){
                
                maxi = arr[i];
                ind = i+1950;
            }
        }
        
        
        return ind;
        
        
    }
}

Analýza složitosti řešení Leetcode pro rok s maximálním počtem obyvatel:

Časová složitost

Časová složitost výše uvedeného řešení je O(n).

Časová složitost

Prostorová složitost výše uvedeného řešení je O(1).

Protože jsme vytvořili pole délky = 101. Můžeme ho tedy považovat za konstantní

 

 

 

 

 

 

Binární strom Inorder Traversal řešení LeetCode

Příkaz problému: Binary Tree Inorder Traversal LeetCode solution Daný kořen binárního stromu vraťte inorder traversal hodnot jeho uzlů. Příklad 1: Vstup: root = [1,null,2,3] Výstup: [1,3,2] Příklad 2: Vstup: root = [] Výstup: [] Příklad 3: Vstup: root = [1] Výstup: [1] Omezení: Počet uzlů v …

Dozvědět se více

Translate »