NotABigFan
Czołem Wielkiej Polsce! Dzisiaj zadanko od Stripe.

Dana jest tablica liczb całkowitych. Znajdź najmniejszą dodatnią liczbę całkowitą, której nie ma w tablicy. Tablica może zawierać duplikaty oraz liczby ujemne. Można modyfikować tablicę. Czas O(n), pamięć O(1)

np:

[]
  • Najlepsze
  • Wszystkie komentarze
D.....n
D.....n
@NotABigFan:
Dla kolejnych elementów tablicy robimy tak:
- jeśli tab[i] <= 0, to nic nie robimy (traktuję takie miejsca jako "puste")
- w p.p. bierzemy x = tab[i] i dalej
-- jeśli x > większe od rozmiaru tablicy, to je "usuwam", tzn. robię tab[i] = 0
-- w p.p. wrzucam x w tab[x], czyli chciałbym, żeby każdemu odpowiadało jego miejsce w tablicy, a tab[i] czyszczę (ustawiam
nesti32
@Hipodups: No chyba nie, wez pod uwage taka tablice [-1,-3, 1, 2, 3, 5]. Szukana liczba jest tu 4 nie 6.
NotABigFan
Wracam po banie (Ich bereue nichts) z następnym zadaniem od Airbnb:

Dany jest ciąg liczb całkowitych. Zwróć największą sumę niesąsiadujących ze sobą liczb z tego ciągu.

np:

[]
  • Najlepsze
  • Wszystkie komentarze
k.....e
k.....e
@masnofest: szkoda że nie da się dawać minusów bo bo ci dał xd
exother
@NotABigFan: Ogólnie powinno działać coś takiego: lecimy po kolei i dla każdej i-tej pozycji trzymamy maksymalną sumę, którą do tej pory udało się osiągnąć i teraz mamy dwie opcje: bierzemy i-tą liczbę albo nie, jeżeli bierzemy to aktualnie największą sumą jest wartość i-tej liczby + największa suma i-2, jeżeli nie to i-1 i z tych dwóch wartości bierzemy maxa. To puszczamy od i=2, ustawiamy max sumę dla i=0 i i=1
NotABigFan
Piątunio, więc chill. Zadanko od Googla.

Dane są dwie acykliczne listy jednokierunkowe, które przecinają się w pewnym miejscu. Znajdź to miejsce (pierwszy węzeł wspólny dla obu list). Czas liniowy względem sumy długości list i pamięć stała. Można modyfikować listę.

#programowanie #dailycodingproblem
  • Najlepsze
  • Wszystkie komentarze
b.....7
b.....7
@NotABigFan:

//helper
const addNode = (value, tail) => ({value,
Frogof
Frogof
@NotABigFan: nie czytałem komentarzy. Dwa wskaźniki, wyprzedź ten z krótszej listy o różnice długości list. Przesuwaj wskaźniki, jak są równe to masz ten węzeł którego szukałeś.
NotABigFan
Czwartek to mały piątek, dzisiaj zadanko z Googla.

Masz tablicę złożoną wyłącznie ze znaków 'R', 'G' lub 'B'. Posortuj tę tablicę tak, że każde 'R' jest przed 'G' i każde 'G' przed 'B'. Możesz tylko swapować elementy (czyli zliczanie odpada).

np. ['G', 'B', 'R', 'R', 'B', 'R', 'G'] -> ['R', 'R', 'R', 'G', 'G', 'B', 'B']

Czas
  • Najlepsze
  • Wszystkie komentarze
laki1
laki1
4
@NotABigFan: ['G', 'B', 'R', 'R', 'B', 'R', 'G'].sort().reverse();

D.....n
D.....n
@laki1: @Veni: Zarzutka czy serio nie wiecie na czym polega notacja O() i nie wiecie jak działają gotowe algorytmy w waszych językach? ( ͡° ʖ̯ ͡°)
NotABigFan
Na wyluzowanie dzisiaj trochę prostsze. Zadawane przez Jane Street:

Niech cons(a, b) tworzy parę p i niech car(p) i cdr(p) zwracają kolejno pierwszy i drugi element pary. np.

car(cons(3, 4)) -> 3
cdr(cons(3, 4)) -> 4
  • Najlepsze
  • Wszystkie komentarze
Saly
Saly
3
@nesti32: def car(pair): return pair(lambda x, y: x)
V.....r
V.....r
@NotABigFan:

const car = f => f((a, b) => a);
const cdr = f => f((a, b) => b);
NotABigFan
Kolejne zadanko na miło spędzone popołudnie. Tak jak poprzednie: nieco trikowe i również jak poprzednie zadawane m.in. przez Google na kochanych przez wszystkich whiteboardowych sesjach rekrutacyjnych.

Masz tablicę (powiedzmy xs) n liczb i liczbę k gdzie 1 <= k <= n. Oblicz maksymalną wartość dla kolejno każdego spójnego fragmentu tablicy o rozmiarze k.

np. xs=[10, 5, 2, 7, 8, 7] i k=3 -> [10, 7, 8,
  • Najlepsze
  • Wszystkie komentarze
NotABigFan
Mam fajne zadanko, które ponoć występuje jako pytanie rekrutacyjne do Google.

Masz tablicę nieujemnych liczb całkowitych gdzie każda liczba występuje dokładnie 3 razy oprócz jednej która występuje dokładnie raz. Wskaż liczbę która występuje dokładnie raz. Czas O(n) i uwaga pamięć O(1).

np. dla [3, 1, 4, 1, 1, 3, 3] -> 4

#programowanie #dailycodingproblem
  • Najlepsze
  • Wszystkie komentarze