Tablice różnicowe do aktualizacji zakresów
Szybkie wykonywanie wielu operacji dodawania do zakresu
Tablice różnicowe do aktualizacji zakresów to bezpłatna lekcja Coding Interview Prep na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Coding Interview Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Coding Interview Prep zawiera 4 lekcji w sumie.
Odwrócenie problemu
Sumy prefiksowe szybko odpowiadały na zapytania dotyczące zakresów. Tablica różnicowa odwraca ten pomysł i pozwala szybko wykonywać wiele aktualizacji zakresów. 🔁
Powolna metoda
Dodawanie wartości do każdego elementu zakresu, powtarzane wiele razy, kosztuje O(n) na aktualizację. Przy q aktualizacjach ten koszt gwałtownie rośnie.
Zapisywanie zmian
Zamiast modyfikować każdą komórkę należy zapisać tylko miejsce, w którym zmiana się zaczyna, oraz miejsce, w którym się kończy. Należy oznaczyć krawędzie, a nie środek.
Co przechowuje tablica różnicowa
Tablica różnicowa przechowuje różnicę między każdym elementem a elementem poprzednim. Zmiana jednej różnicy przesuwa później całą serię wartości.
Sztuczka z dwoma oznaczeniami
Aby dodać v do elementów od l do r, należy dodać v pod indeksem l i odjąć v pod indeksem r + 1. Tylko dwie modyfikacje obejmują cały zakres.
diff[l] += v
diff[r + 1] -= vDlaczego odejmowanie
Dodanie wartości pod indeksem l włącza zmianę, a odjęcie jej pod indeksem r + 1 ją wyłącza. Razem ograniczają aktualizację do jednego zakresu.
Tanie stosowanie wszystkich aktualizacji
Każda aktualizacja wymaga tylko dwóch zapisów do tablicy, więc q aktualizacji zajmuje łącznie O(q). Najbardziej pracochłonna część jest odroczona do końca.
Odtworzenie tablicy końcowej
Po umieszczeniu wszystkich oznaczeń należy obliczyć sumę prefiksową tablicy różnicowej. Jedno przejście odtwarza każdą wartość końcową.
for i in range(1, n):
diff[i] += diff[i - 1]Rozmiar z dodatkową komórką ochronną
Tablica powinna mieć o jedną komórkę więcej, aby r + 1 nigdy nie wychodziło poza jej koniec. Ta dodatkowa komórka ochronna zapobiega błędom indeksowania.
Łączny koszt
Na oznaczenie aktualizacji potrzeba O(q), a na jedno przejście odtwarzające tablicę O(n). Łączny koszt jest znacznie mniejszy niż naiwny O(n razy q).
Gdzie to rozwiązanie wygrywa
Tablice różnicowe świetnie sprawdzają się przy zliczaniu rezerwacji, opłatach drogowych i każdym problemie z wieloma operacjami dodawania do zakresu oraz jednym końcowym odczytem.
Szybki sprawdzian
Należy dodać v do każdego elementu od indeksu l do r.
Podsumowanie
Można grupować aktualizacje zakresów za pomocą tablicy różnicowej: oznaczyć l oraz r + 1, a następnie raz obliczyć sumy prefiksowe, aby odtworzyć tablicę. Szybkie aktualizacje, pojedynczy odczyt. ✅
Ucz się Coding Interview Prep dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 90
- Lekcje
- 360
Często zadawane pytania
Czy lekcja „Tablice różnicowe do aktualizacji zakresów” jest bezpłatna?
Tak — pełny tekst „Tablice różnicowe do aktualizacji zakresów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Coding Interview Prep, przejdź na CoddyKit PRO. Kurs Coding Interview Prep zawiera 4 lekcji w sumie.
Co nauczysz się w „Tablice różnicowe do aktualizacji zakresów”?
Szybkie wykonywanie wielu operacji dodawania do zakresu Ćwiczysz Coding Interview Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Coding Interview Prep?
Nie wymagamy żadnego doświadczenia. Coding Interview Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Tablice różnicowe do aktualizacji zakresów”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Coding Interview Prep?
Tak. Każda lekcja Coding Interview Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Tworzenie tablicy sum prefiksowych
- Sumowanie dowolnego zakresu przez odejmowanie
- Zliczanie podtablic o zadanej sumie
- Tablice różnicowe do aktualizacji zakresów