120+ tantangan pengkodean yang terus diperbarui, interaktif, dan berbasis pengujian , dengan kartu flash Anki.
Tantangannya fokus pada algoritma dan struktur data yang ditemukan dalam wawancara pengkodean .
Setiap tantangan memiliki satu atau lebih solusi referensi yaitu:
Tantangan akan segera memberikan petunjuk tambahan sesuai permintaan untuk membantu Anda mencapai solusi optimal.
Notebook juga merinci:
Juga disertakan implementasi referensi yang diuji unit dari berbagai struktur data dan algoritma.
Dek kartu flash Anki yang disediakan menggunakan pengulangan spasi untuk membantu Anda mempertahankan konsep-konsep utama.
Cocok untuk digunakan saat bepergian.
Mencari sumber daya untuk membantu Anda mempersiapkan wawancara Desain Sistem dan Desain Berorientasi Objek ?
Lihat repo saudaranya, The System Design Primer, yang berisi deck Anki tambahan:
Setiap tantangan memiliki dua buku catatan, buku catatan tantangan dengan pengujian unit untuk Anda selesaikan dan buku catatan solusi untuk referensi.
Format : Kategori Tantangan - Jumlah Tantangan
Jumlah total tantangan: 120
Unit diuji, implementasi yang berfungsi penuh dari struktur data berikut:
Unit diuji, implementasi yang berfungsi penuh dari algoritma berikut:
Kredit Gambar
Tantangan | Buku Catatan Statis |
---|---|
Tentukan apakah string berisi karakter unik | Tantangan │ Solusi |
Tentukan apakah suatu string merupakan permutasi dari string lain | Tantangan │ Solusi |
Tentukan apakah suatu dawai merupakan rotasi dawai lain | Tantangan │ Solusi |
Kompres string | Tantangan │ Solusi |
Membalikkan karakter dalam sebuah string | Tantangan │ Solusi |
Diberikan dua string, temukan satu karakter yang berbeda | Tantangan │ Solusi |
Temukan dua indeks yang berjumlah nilai tertentu | Tantangan │ Solusi |
Menerapkan tabel hash | Tantangan │ Solusi |
Terapkan desis buzz | Tantangan │ Solusi |
Temukan karakter pertama yang tidak berulang dalam sebuah string | Berkontribusi │ Berkontribusi |
Hapus karakter tertentu dalam sebuah string | Berkontribusi │ Berkontribusi |
Membalikkan kata-kata dalam sebuah string | Berkontribusi │ Berkontribusi |
Ubah string menjadi bilangan bulat | Berkontribusi │ Berkontribusi |
Ubah bilangan bulat menjadi string | Berkontribusi │ Berkontribusi |
Tambahkan tantangan | Berkontribusi │ Berkontribusi |
Tantangan | Buku Catatan Statis |
---|---|
Hapus duplikat dari daftar tertaut | Tantangan │ Solusi |
Temukan elemen ke-k hingga terakhir dari daftar tertaut | Tantangan │ Solusi |
Hapus sebuah node di tengah daftar tertaut | Tantangan │ Solusi |
Partisi daftar tertaut di sekitar nilai tertentu | Tantangan │ Solusi |
Tambahkan dua angka yang digitnya disimpan dalam daftar tertaut | Tantangan │ Solusi |
Temukan awal dari loop daftar tertaut | Tantangan │ Solusi |
Tentukan apakah daftar tertaut merupakan palindrom | Tantangan │ Solusi |
Menerapkan daftar tertaut | Tantangan │ Solusi |
Tentukan apakah suatu daftar bersifat siklik atau asiklik | Berkontribusi │ Berkontribusi |
Tambahkan tantangan | Berkontribusi │ Berkontribusi |
Tantangan | Buku Catatan Statis |
---|---|
Implementasikan n tumpukan menggunakan satu array | Tantangan │ Solusi |
Menerapkan tumpukan yang melacak elemen minimumnya | Tantangan │ Solusi |
Menerapkan satu set kelas tumpukan yang menggabungkan daftar tumpukan yang dibatasi kapasitas | Tantangan │ Solusi |
Menerapkan antrian menggunakan dua tumpukan | Tantangan │ Solusi |
Urutkan tumpukan menggunakan tumpukan lain sebagai buffer | Tantangan │ Solusi |
Menerapkan tumpukan | Tantangan │ Solusi |
Menerapkan antrian | Tantangan │ Solusi |
Menerapkan antrian prioritas yang didukung oleh array | Tantangan │ Solusi |
Tambahkan tantangan | Berkontribusi │ Berkontribusi |
Tantangan | Buku Catatan Statis |
---|---|
Terapkan pencarian mendalam pertama (pra-, dalam, pasca-pesanan) pada pohon | Tantangan │ Solusi |
Menerapkan penelusuran luas-pertama pada pohon | Tantangan │ Solusi |
Tentukan tinggi sebuah pohon | Tantangan │ Solusi |
Buat pohon pencarian biner dengan tinggi minimal dari array yang diurutkan | Tantangan │ Solusi |
Buat daftar tertaut untuk setiap level pohon biner | Tantangan │ Solusi |
Periksa apakah pohon biner seimbang | Tantangan │ Solusi |
Tentukan apakah suatu pohon adalah pohon pencarian biner yang valid | Tantangan │ Solusi |
Temukan penerus urutan dari node tertentu dalam pohon pencarian biner | Tantangan │ Solusi |
Temukan node terbesar kedua di pohon pencarian biner | Tantangan │ Solusi |
Temukan nenek moyang terendah | Tantangan │ Solusi |
Balikkan pohon biner | Tantangan │ Solusi |
Menerapkan pohon pencarian biner | Tantangan │ Solusi |
Terapkan tumpukan minimum | Tantangan │ Solusi |
Terapkan percobaan | Tantangan │ Solusi |
Terapkan penelusuran mendalam pertama pada grafik | Tantangan │ Solusi |
Menerapkan penelusuran luas pertama pada grafik | Tantangan │ Solusi |
Tentukan apakah ada jalur antara dua node dalam suatu grafik | Tantangan │ Solusi |
Menerapkan grafik | Tantangan │ Solusi |
Temukan urutan pembangunan berdasarkan daftar proyek dan dependensi. | Tantangan │ Solusi |
Temukan jalur terpendek dalam grafik berbobot. | Tantangan │ Solusi |
Temukan jalur terpendek dalam grafik tak berbobot. | Tantangan │ Solusi |
Tambahkan tantangan | Berkontribusi │ Berkontribusi |
Tantangan | Buku Catatan Statis |
---|---|
Menerapkan pengurutan seleksi | Tantangan │ Solusi |
Menerapkan penyisipan penyortiran | Tantangan │ Solusi |
Terapkan penyortiran cepat | Tantangan │ Solusi |
Terapkan pengurutan gabungan | Tantangan │ Solusi |
Menerapkan pengurutan radix | Tantangan │ Solusi |
Urutkan array string sehingga semua anagram bersebelahan | Tantangan │ Solusi |
Temukan item dalam larik yang diurutkan dan diputar | Tantangan │ Solusi |
Cari matriks yang diurutkan untuk suatu item | Tantangan │ Solusi |
Temukan int bukan dalam input n bilangan bulat | Tantangan │ Solusi |
Mengingat array terurut A, B, gabungkan B menjadi A dalam urutan terurut | Tantangan │ Solusi |
Menerapkan pengurutan pilihan yang stabil | Berkontribusi │ Berkontribusi |
Jadikan pengurutan yang tidak stabil menjadi stabil | Berkontribusi │ Berkontribusi |
Terapkan versi quicksort yang efisien dan siap pakai | Berkontribusi │ Berkontribusi |
Diberikan dua array yang diurutkan, gabungkan satu ke yang lain dalam urutan yang diurutkan | Berkontribusi │ Berkontribusi |
Temukan elemen dalam array bilangan bulat yang diputar dan diurutkan | Berkontribusi │ Berkontribusi |
Tambahkan tantangan | Berkontribusi │ Berkontribusi |
Tantangan | Buku Catatan Statis |
---|---|
Menerapkan fibonacci secara rekursif, dinamis, dan berulang | Tantangan │ Solusi |
Maksimalkan barang-barang yang ditempatkan di ransel | Tantangan │ Solusi |
Maksimalkan barang tak berbatas yang ditempatkan di ransel | Tantangan │ Solusi |
Temukan barisan persekutuan terpanjang | Tantangan │ Solusi |
Temukan barisan yang terpanjang | Tantangan │ Solusi |
Minimalkan biaya perkalian matriks | Tantangan │ Solusi |
Maksimalkan harga saham dengan k transaksi | Tantangan │ Solusi |
Temukan jumlah minimum cara untuk mewakili n sen berdasarkan susunan koin | Tantangan │ Solusi |
Temukan sejumlah cara unik untuk merepresentasikan n sen berdasarkan serangkaian koin | Tantangan │ Solusi |
Cetak semua kombinasi n-pasang tanda kurung yang valid | Tantangan │ Solusi |
Jelajahi labirin | Tantangan │ Solusi |
Cetak semua himpunan bagian dari suatu himpunan | Tantangan │ Solusi |
Cetak semua permutasi string | Tantangan │ Solusi |
Temukan indeks ajaib dalam array | Tantangan │ Solusi |
Temukan banyak cara untuk menjalankan n langkah | Tantangan │ Solusi |
Implementasikan Menara Hanoi dengan 3 menara dan N disk | Tantangan │ Solusi |
Menerapkan faktorial secara rekursif, dinamis, dan berulang | Berkontribusi │ Berkontribusi |
Lakukan pencarian biner pada array bilangan bulat yang diurutkan | Berkontribusi │ Berkontribusi |
Cetak semua kombinasi string | Berkontribusi │ Berkontribusi |
Menerapkan fungsi pengisian cat | Berkontribusi │ Berkontribusi |
Temukan semua permutasi untuk mewakili n sen, jika diberi koin 1, 5, 10, 25 sen | Berkontribusi │ Berkontribusi |
Tambahkan tantangan | Berkontribusi │ Berkontribusi |
Tantangan | Buku Catatan Statis |
---|---|
Hasilkan daftar bilangan prima | Tantangan │ Solusi |
Temukan akar digitalnya | Tantangan │ Solusi |
Buat kelas yang mendukung mode insert, max, min, mean, di O(1) | Tantangan │ Solusi |
Tentukan apakah suatu bilangan merupakan pangkat dua | Tantangan │ Solusi |
Tambahkan dua angka tanpa tanda + atau - | Tantangan │ Solusi |
Kurangi dua angka tanpa tanda + atau - | Tantangan │ Solusi |
Periksa apakah suatu bilangan prima | Berkontribusi │ Berkontribusi |
Tentukan apakah dua garis pada bidang kartesius berpotongan | Berkontribusi │ Berkontribusi |
Hanya menggunakan penjumlahan, implementasikan perkalian, pengurangan, dan pembagian untuk int | Berkontribusi │ Berkontribusi |
Carilah bilangan ke-k sehingga faktor primanya hanyalah 3, 5, dan 7 | Berkontribusi │ Berkontribusi |
Tambahkan tantangan | Berkontribusi │ Berkontribusi |
Tantangan | Buku Catatan Statis |
---|---|
Menerapkan operasi manipulasi bit umum | Tantangan │ Solusi |
Tentukan jumlah bit yang akan dibalik untuk mengubah a menjadi b | Tantangan │ Solusi |
Gambarlah garis di layar | Tantangan │ Solusi |
Balik sedikit untuk memaksimalkan urutan 1 terpanjang | Tantangan │ Solusi |
Dapatkan angka terbesar berikutnya dan angka terkecil berikutnya | Tantangan │ Solusi |
Gabungkan dua bilangan biner | Tantangan │ Solusi |
Tukar bit ganjil dan genap dalam bilangan bulat | Tantangan │ Solusi |
Cetak representasi biner angka antara 0 dan 1 | Tantangan │ Solusi |
Tentukan jumlah 1 dalam representasi biner dari bilangan bulat tertentu | Berkontribusi │ Berkontribusi |
Tambahkan tantangan | Berkontribusi │ Berkontribusi |
Tantangan | Buku Catatan Statis |
---|---|
Temukan substring terpanjang dengan paling banyak k karakter berbeda | Tantangan │ Solusi |
Temukan hasil kali tertinggi dari tiga angka | Tantangan │ Solusi |
Maksimalkan keuntungan saham dari 1 beli dan 1 jual | Tantangan │ Solusi |
Pindahkan semua angka nol dalam daftar ke akhir | Tantangan │ Solusi |
Temukan produk dari setiap int lainnya | Tantangan │ Solusi |
Dengan adanya daftar masuk dan keluar, temukan periode tersibuk | Tantangan │ Solusi |
Tentukan keliling pulau | Tantangan │ Solusi |
Format kunci lisensi | Tantangan │ Solusi |
Temukan jalur file absolut terpanjang | Tantangan │ Solusi |
Gabungkan rentang tuple | Tantangan │ Solusi |
Tetapkan cookie | Tantangan │ Solusi |
Tentukan apakah Anda bisa menang di Nim | Tantangan │ Solusi |
Periksa apakah majalah dapat digunakan untuk membuat catatan tebusan | Tantangan │ Solusi |
Temukan berapa kali sebuah kalimat dapat dimuat di layar | Tantangan │ Solusi |
Pohon utopis | Tantangan │ Solusi |
Memaksimalkan xor | Tantangan │ Solusi |
Tambahkan tantangan | Berkontribusi │ Berkontribusi |
interactive-coding-challenges # Repo
├─ arrays_strings # Category of challenges
│ ├─ rotation # Challenge folder
│ │ ├─ rotation_challenge.ipynb # Challenge notebook
│ │ ├─ rotation_solution.ipynb # Solution notebook
│ │ ├─ test_rotation.py # Unit test*
│ ├─ compress
│ │ ├─ compress_challenge.ipynb
│ │ ├─ compress_solution.ipynb
│ │ ├─ test_compress.py
│ ├─ ...
├─ linked_lists
│ ├─ palindrome
│ │ └─ ...
│ ├─ ...
├─ ...
*Buku catatan (.ipynb) membaca/menulis file unit test (.py) terkait.
README ini berisi tautan ke Binder , yang menghosting buku catatan dinamis dari konten repo secara online tanpa memerlukan instalasi.
Berlari:
pip install jupyter
Untuk petunjuk rinci, skrip, dan alat untuk menyiapkan lingkungan pengembangan Anda secara lebih optimal, lihat repo dev-setup.
Untuk detail selengkapnya tentang pemasangan notebook, ikuti petunjuk di sini.
Informasi lebih lanjut tentang Notebook IPython/Jupyter dapat ditemukan di sini.
Tantangan yang diberikan berupa IPython/Jupyter Notebooks dan telah diuji dengan Python 2.7 dan Python 3.x.
Jika Anda perlu menginstal Notebook IPython/Jupyter, lihat bagian Instalasi Notebook.
Jalankan buku catatan tantangan:
$ git clone https://github.com/donnemartin/interactive-coding-challenges.git
$ cd interactive-coding-challenges
$ jupyter notebook
Ini akan meluncurkan browser web Anda dengan daftar kategori tantangan:
Untuk men-debug solusi Anda dengan pdb, lihat tiket berikut.
Catatan: Jika solusi Anda berbeda dari yang tercantum dalam Buku Catatan Solusi, pertimbangkan untuk mengirimkan permintaan penarikan sehingga orang lain dapat memperoleh manfaat dari pekerjaan Anda. Tinjau Pedoman Berkontribusi untuk detailnya.
Tantangan, solusi, dan pengujian unit disajikan dalam bentuk IPython/Jupyter Notebooks .
Kontribusi dipersilahkan!
Tinjau Pedoman Berkontribusi untuk mengetahui detail tentang cara:
Jangan ragu untuk menghubungi saya untuk mendiskusikan masalah, pertanyaan, atau komentar apa pun.
Info kontak saya dapat ditemukan di halaman GitHub saya.
Saya memberikan kode dan sumber daya dalam repositori ini kepada Anda di bawah lisensi sumber terbuka. Karena ini adalah repositori pribadi saya, lisensi yang Anda terima atas kode dan sumber daya saya berasal dari saya dan bukan perusahaan saya (Facebook).
Copyright 2015 Donne Martin
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.