👏 Preuzmi→Beleške za vežbanje LeetCode zadataka u Java verziji
Slučajno sam na GitHub-u naišao na odlične beleške za vežbanje LeetCode zadataka od čak 1 GB — a važno je to da su prava Java verzija. Video sam mnogo sjajnih beleški za vežbanje, i to u Go i C++ verziji, ali nikada Java verziju, pa ovog puta imam utisak da sam otkrio pravo blago!
U suštini, mnogi su me privatno pitali da li postoji Java verzija. U početku sam mislio da, kad vežbate zadatke, jezik u kome ih radite uopšte nije bitan — bitan je pristup rešavanju. Ali pošto sam video ovu Java verziju beleški, shvatio sam: kada vežbate u programskom jeziku koji vam je blizak, to zaista povećava zadovoljstvo vežbanjem zadataka~

Samo otvorite bilo koje rešenje da biste osetili — autor je stvarno postigao da objašnjenja budu bogato ilustrovana, a ne samo suv kod rešenja. Te ručno crtane skice pokazuju koliko je truda autor uložio, a za mnoge zadatke dato je više različitih pristupa, tako da možemo razmišljati iz različitih uglova i doći do optimalnog rešenja — a optimalno rešenje je prednost i na intervjuu.
Autor je za LeetCode čuo još u prvoj godini fakulteta, ali je vežbanje zadataka radio povremeno, pa kada bi posle izvesnog vremena pregledao ranije urađene zadatke, uvek bi zaboravio. Tako je došao na ideju da za svaki rešen zadatak napravi sažetak. S druge strane, neka objašnjenja zadataka na LeetCode-u su prilično štura — neka samo bace kod, što je vrlo neprijateljski nastrojeno prema početnicima. Zato je autor iskoristio priliku da razjasni sve svoje metode rešavanja i detaljno ih sažme, kako bi i drugima olakšao razumevanje — mnogostruka korist.
Još u prvoj godini fakulteta autor je učestvovao u ACM treningu, ali su tada njegove osnove bile previše slabe — nije razlikovao stek (stack) i red (queue) — pa je taj ACM put uskoro stagnirao. Kada se ponovo pripremio za vežbanje zadataka, već je bilo doba diplome.
I autor je na prvim zadacima radio sporo; za mnoge nije imao ideju i jedva bi prošao oslanjajući se na tuđe pristupe rešavanju. Naročito peti zadatak — nalaženje najduže palindromske podniske — trebalo mu je mnogo dana dok sve načine rešavanja nije sažeo.
Pošto je autor rešio 100 zadataka, shvatio je da je zaista zavoleo vežbanje. Za u suštini svaki sledeći zadatak mogao je da smisli barem jedan pristup, pa i optimalno rešenje, a katkad bi mu padale na pamet i rešenja do kojih drugi nisu došli — ha, ha, osećaj kao da u igri postanete nepobediv~
Zato svima savetujem: nemojte se plašiti da su vam osnove slabe, nemojte brinuti da nećete doći do rešenja. U početku je to "zajam", ne, ne, ne — "zajam ideja"; kad mnogo pozajmite, ne morate ni da vratite, postaje vaše. Bitno je započeti i istrajati.
GitHub adresa: https://github.com/wind-liang/leetcode
Pored Java verzije, postoji i Go verzija. Ova beleška sadrži stotine zadataka koje je autor prikupio nakon vežbanja algoritamskih zadataka na LeetCode-u, sa detaljnim postupkom rešavanja za svaki zadatak. Mnogi kažu da je vežbanje zadataka iz struktura podataka i algoritama neučinkovito i prilično bolno. Sa ovim sažetkom, pomoć u vežbanju algoritama za zapošljavanje studenata i iskusnih kandidata je očigledna — obavezno sačuvajte.



GitHub adresa: https://github.com/halfrost/LeetCode-Go
Postoji i C/C++ verzija; već i samo gledanje u sadržaj ove beleške ostavlja snažan utisak — verujem da ćete i vi, kao i ja, osetiti to isto.

Cela knjiga ima 143 strane, a sadržaj koji detaljno objašnjava algoritme raspoređen je u petnaest poglavlja. Svako poglavlje obuhvata važne koncepte uz osnovna objašnjenja i primere zadataka, a sadrži i preporuke za dodatnu vežbu.
Sedmo poglavlje obrađuje dinamičko programiranje; ovde izdvajamo deo sadržaja da bi se videlo da autor objašnjava koncepte veoma temeljito i detaljno.

Ništa me ne zaustavlja — osim cilja; iako na obali ima ruža, hladovine i mirne luke, ja sam čamac bez vezanog užeta.
