This shows you the differences between two versions of the page.
pa:curs-optional:sd-si-debugging [2016/03/27 11:29] cosmin.dragomir |
pa:curs-optional:sd-si-debugging [2022/03/07 16:13] (current) darius.neatu [Debugging] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Crash course: Debugging și Structuri de Date ====== | ====== Crash course: Debugging și Structuri de Date ====== | ||
+ | ===== Debugging ===== | ||
+ | Pe parcursul semestrului, vă poate fi util să știți cum se folosește un debugger pentru a găsi probleme într-un mod rapid. Vă recomandăm articolul [[https://ocw.cs.pub.ro/courses/programare/tutoriale/debugging | PC@Debugging]] pentru a vă reaminti de cum folosim GDB atât din CLI cât și prin intermediul unui IDE. | ||
===== Obiective crash course ===== | ===== Obiective crash course ===== | ||
*Reacomodarea cu structuri de date esențiale implementării algoritmilor | *Reacomodarea cu structuri de date esențiale implementării algoritmilor | ||
*Însușirea abilităților de folosire a unor structuri de date din STL, respectiv Java API | *Însușirea abilităților de folosire a unor structuri de date din STL, respectiv Java API | ||
*Însușirea unor deprinderi de bază legate de procesul de debugging, incluzând ințelegerea principalelor surse de erori din Java și C++ | *Însușirea unor deprinderi de bază legate de procesul de debugging, incluzând ințelegerea principalelor surse de erori din Java și C++ | ||
+ | |||
+ | ===== Curs structuri de date ===== | ||
+ | <HTML> | ||
+ | <iframe src="https://docs.google.com/file/d/1htowLsDHuURZVaSsTzfOTgeYnGezCVppJiWRFw_Lrhk/preview" width="640" height="480"></iframe> | ||
+ | </HTML> | ||
+ | ===== Curs debugging ===== | ||
+ | <HTML> | ||
+ | <iframe src="https://docs.google.com/file/d/1qfagP_JEoR5mpyIaZ-YWcGrfj7v3zh43VY_22cUMe-w/preview" width="640" height="480"></iframe> | ||
+ | </HTML> | ||
+ | |||
===== Structuri de Date ====== | ===== Structuri de Date ====== | ||
Line 59: | Line 71: | ||
==== Problema 1 ==== | ==== Problema 1 ==== | ||
- | Dându-se un vector de N elemente, se dorește aflarea duplicatelor aflate la distanța maxim K. Două elemente se află la distanța maxim K dacă ele se află la pozițiile i și j, iar ''|i - j| ≤ K''. | + | Dându-se un vector de N elemente, se dorește să se afle dacă există duplicate aflate la distanța maxim K. Două elemente se află la distanța maxim K dacă ele se află la pozițiile i și j, iar ''|i - j| ≤ K''. |
+ | <note tip> | ||
Exemplu: Pentru vectorul ''{1, 4, 1, 6, 4, 6, 1}'' și ''K = 2'', avem duplicatele ''(1,1) (pe pozițiile 0 și 2) și (6, 6) (la pozițiile 3 și 5)''. | Exemplu: Pentru vectorul ''{1, 4, 1, 6, 4, 6, 1}'' și ''K = 2'', avem duplicatele ''(1,1) (pe pozițiile 0 și 2) și (6, 6) (la pozițiile 3 și 5)''. | ||
+ | </note> | ||
Hint: Complexitate dorită O(N). Extra hint: Gandiți-vă cum puteți extinde problema aflării duplicatelor dintr-un vector. | Hint: Complexitate dorită O(N). Extra hint: Gandiți-vă cum puteți extinde problema aflării duplicatelor dintr-un vector. | ||
+ | |||
+ | ==== Problema 2 ==== | ||
+ | Dându-se un vector de N elemente, se dorește să se afle dacă există duplicate fuzzy aflate la distanța maxim K. Două elemente se află la distanța maxim K dacă ele se află la pozițiile i și j, iar ''|i - j| ≤ K''. Două elemente A și B sunt duplicate fuzzy dacă |A - B| < 3. | ||
+ | |||
+ | <note tip> | ||
+ | Exemplu: Pentru vectorul ''{1, 4, 1, 6, 4, 6, 1}'' și ''K = 2'', avem duplicatele fuzzy ''(1,1) (pe pozițiile 0 și 2), (6, 4) (pe pozițiile 3 și 4), (4, 6) (pe pozițiile 3 și 4) și (6, 6) (la pozițiile 3 și 5)''. | ||
+ | </note> | ||
+ | |||
+ | Hint: Complexitate dorită O(N). Extra hint: Folosiți ideea de bază din Bucket Sort :). | ||
===== Feedback ===== | ===== Feedback ===== |