Dla tych co nie znają, LeetCode to platforma internetowa, na której mamy do dyspozycji setki, jak nie tysiące zadań z programowania do rozwiązania. Mało tego, LeetCode pomoże nam przedzierać się przez nie od najprostszych, przez bardziej złożone do naprawdę trudnych. W Python, SQL, C, Java czy też innym języku naszego wyboru.
Tylko po co i czy warto poświęcać na to swój czas?
No właśnie. Zanim się nad tym zastanowimy, rzućmy okiem jak wygląda.
Rozpoczęcie przygody z LeetCode
Ku niczyjemu zaskoczeniu, platforma dostępna jest https://leetcode.com
Na wstępie, nie trzeba nic płacić. Możemy zalogować się w 7 i pół sekundy za pomocą konta google, i cieszyć się całkiem sporym zestawem zadań dostępnych za darmo.
Po zalogowaniu przechodzimy od razu do „mięsa” dostępnego na LeetCode, czyli zakładki „Problems” i przewijamy lekko w dół aby zobaczyć listę.
I tutaj mamy zadania do wykonania.
- Algorithms -> programowanie w wybranym przez siebie języku
- Databases -> zadania SQL
- Shell -> shell 🙂
- Concurrency -> programowanie inaczej
Wszystkie zadania które widzimy, są popularnym zadaniami często stosowanymi na rozmowach rekrutacyjnych na stanowiska związane z programowaniem czy bazami danych. Jeżeli zapłacili byśmy za subskrypcję, dostali byśmy również informację w jakich firmach dają te zadania do rozwiązania.
Poziom trudności zadań na LeetCode
Absolutnie najważniejszą informacją jest poziom trudności zadań które mamy dostępne w LeetCode. Generalnie ta informacja pozwoli nam uniknąć wpadnięcia w depresję. Jedynym i słusznym sposobem rozpoczęcia rozwiązywania zadań jest poziom Easy!
Medium wymaga wprawy i znajomości podstawowych (i nie tylko) algorytmów, które będziemy poznawać krok po kroku.
Natomiast poziom Hard, przeznaczony jest dla tych którzy nie mają rodziny, pracy i nie mogą spać po nocach.
Wykonywanie zadań
Wybieramy np Algorithms, posortujemy po poziomie trudności i klikamy w zadanie „1. Two Sum”. Po lewej stronie zobaczymy opis zadania oraz przykłady, a po prawej okienko w którym będziemy je rozwiązywać:
Nie wiem czemu wszystko jest czarne, musiałem gdzieś włączyć dark mode. W każdym razie jestem przekonany że kiedyś było jasne tło. Natomiast wszystko jest i było po angielsku, tak więc przy okazji języka się poduczymy.
To co musimy zrobić, to uzupełnić kawałek kodu po prawej stronie, aby rozwiązywał nam zadanie po lewej.
W tym zadaniu, mamy znaleźć 2 liczby w podanej liście, których suma daje wartość wskazaną w zmiennej „target”.
Kod który mamy już napisany w LeetCode to:
Czyli mamy kawałek funkcji, której treść trzeba teraz napisać. W naszym przypadku może to wyglądać tak:
następnie mamy do dyspozycji 2 przyciski: RUN oraz SUBMIT
RUN sprawdzi nam prawidłowe działanie naszej funkcji:
Natomiast SUBMIT, sprawdzi jej wydajność, gdyż zadania w LeetCode, bardzo często w wymaganiach stawiają oczekiwania co do szybkości działania naszego rozwiązania oraz ilości pamięci którą zjada. SUBMIT:
I tutaj kończą się żarty. Okazuje się że nawet najprostsze zadanie w LeetCode może zostać wykonane lepiej lub gorzej. Przy każdym rozwiązaniu jest również dyskusja, której ludzie wklejają swoje rozwiązania. Zaglądamy tam tylko jak już swoje zadanie rozwiążemy, inaczej nauka nie będzie mieć sensu.
To jest absolutnie genialna część całej platformy LeetCode. Możemy zobaczyć jak kreatywnie ludzie podchodzą do rozwiązywania zadań, jakich technik używają, jakich algorytmów i systematycznie poszerzać swoją wiedzę. Oczywiście mogąc innym zadawać pytania czy też im pomagać.
Zawody na LeetCode
I chociaż zawsze chciałem, aczkolwiek zabrakło czasu, na LeetCode, jak i również na podobnych serwisach, są organizowane regularne zawody czy też konkursy, gdzie tym razem mamy ograniczony czas na rozwiązanie kilku zadań.
Po czym nasze rozwiązania są porównywane z rozwiązaniami innych uczestników i dalej czeka nas już tylko chwała oraz ewentualnie w zależności od konkursu jakaś skromna nagroda.
Reputacja i punkty użytkownika na portalu LeetCode
W raz z rozwiązywaniem zadań, udziałem w dyskusjach oraz konkursach, wzrasta też nasza reputacja. Przydzielane są nam różne punkty, zostajemy umiejscowieni w rankingu oraz dostajemy pochwały od innych użytkowników za udział w dyskusjach.
Bardzo fajne i dość motywujące. Poniżej też widać, że odkryłem LeetCode we wrześniu 2022 i wtedy też zrobiłem kilka zadań. Wszystko w ramach bezpłatnego profilu.
Czy warto i ogólne wrażenia
Ile ja bym dał za to aby LeetCode istniał w czasach kiedy ja zaczynałem programować! Rany. To w jaki sposób przyspiesza to proces nauki to jest niesamowite. Nie nauczymy się zastosowania bibliotek czy też rozwiązywania realnych problemów, ale uczymy się myśleć tak jak kiedyś musiał myśleć każdy programista – jak EFEKTYWNIE rozwiązać problem.
Uczymy się że, można robić rzeczy w lepszy lub gorszy sposób. Że są standardowe sposoby rozwiązywania standardowych problemów, że istnieją algorytmy które warto znać. Że należy szanować moc procesora i pamięć komputera.
Czy LeetCode jest wart Twojego czasu?
- Dopiero uczysz się programować – nie dla ciebie. Za wcześnie. Poczekaj i opanuj podstawy.
- Znasz podstawy Python i szukasz sposobu, aby opanować język lepiej i poznać algorytmy – TAK. LeetCode będzie, dla Ciebie ciężki, ale genialny.
- Przygotowujesz się do rozmowy rekrutacyjnej na stanowisko związane z programowanie – prawdopodobnie zadania które zobaczysz na rozmowie są na LeetCode:)
- Chcesz mieć czym się pochwalić na rozmowie rekrutacyjnej? – dajesz! Profil na LeetCode pokaże że się starasz, umiesz samodzielnie się rozwijać i rozwiązywać problemy.
Podsumowując
Genialne i nie mogę zrobić nic innego niż tylko polecić. Czy zrobisz 5-10 zadań czy będziesz brać udział w konkursach to już kwestia indywidualna, jednak przynajmniej zobaczysz ile umiesz, a ile masz do nauczenia.
Jeżeli chodzi o portale alternatywne, to jeszcze mogę polecić HackerOne. Działa dość analogicznie, jednak z mojego doświadczenia, zadania są tam opisane w mniej przyjazny, rozwlekły sposób oraz dodatkowo mniej przypominają te z rozmów rekrutacyjnych.
I tak, tak. Wiele zadań w LeetCode da się rozwiązać z pomocą ChatGPT, ale równie dobrze wszystkie z nich da się rozwiązać ściągając rozwiązania z sekcji z dyskusjami. Tylko uczysz się tyle samo, czyli nic.
The choice is yours!