[giaban]599,000[/giaban]
[vitri]Online[/vitri]
[phongngu]Liên Tục[/phongngu]
[mota]
Khóa học giúp các bạn ôn lại toàn bộ kiến thức về các cấu trúc dữ liệu và giải thuật đã học một cách bài bản, giải quyết hàng chục bài LeetCode để cải thiện kỹ năng lập trình, từ đó bạn có thể tối ưu code của mình hơn.
[/mota]
[tongquan]
Bạn sẽ học được gì
Hệ thống lại toàn bộ cấu trúc dữ liệu và thuật toán đã được học.
Tự mình cài đặt lại các cấu trúc dữ liệu cũng như thuật toán đó.
Biết cách đánh giá một thuật toán dựa trên độ phức tạp (không gian và thời gian).
Học cách sử dụng cách thư viện của Java để thực thi các thuật toán.
Được làm và chữa hàng chục bài tập trên trang lập trình online rất nổi tiếng LeetCode.
Giới thiệu khóa học
Hiện nay ngành Công nghệ thông tin nói chung và ngành Lập trình viên nói riêng ở nước ta ngày càng phát triển!
Chính vì vậy mà quy trình tuyển chọn của một số công ty cũng ngày càng cao.
Những công ty lớn như: Viettel, VinGroup, Samsung,... tất cả các vòng phỏng vấn của họ đều có vòng thi test kỹ thuật đầu vào, và cụ thể là những bài thi dạng lập trình thi đấu, liên quan đến cấu trúc dữ liệu và giải thuật là chính.
Tại nước ngoài hầu hết những kiểu thi như thế này đều rất là phổ biến và hầu như công ty nào cũng áp dụng.
Nhưng gần đây cách test này mới được áp dụng một cách chuyên nghiệp tại Việt Nam.
Có những công ty cung cấp cho ứng viên một bài test online tại một nền tảng thứ 3 (như HackerRank, LeetCode) và yêu cầu họ hoàn thành bài test trong 2-3 tiếng.
>> Chính vì những lý do trên mà khoá học "Cấu trúc dữ liệu và giải thuật Thực chiến với Java và LeetCode" được ra đời.
Khoá học sẽ giúp các bạn ôn lại toàn bộ kiến thức về các cấu trúc dữ liệu và giải thuật đã học, ví dụ:
Cấu trúc dữ liệu:
Array,
String,
Stack (Ngăn xếp),
Queue (Hàng đợi),
Linked List (Danh sách liên kết),
Tree (Cây), Binary Tree (Cây Nhị phân),
Graph (Đồ thị),...
Thuật toán:
Sorting (Sắp xếp),
Searching (Tìm kiếm),
Recursion (Đệ quy),
Depth First Search (Tìm kiếm theo chiều sâu),
Breadth First Search (Tìm kiếm theo chiều rộng),...
Tất cả các kiến thức đó sẽ được tổng hợp và ôn tập lại một cách bài bản.
Sau đó chúng ta sẽ đi giải quyết hàng chục bài LeetCode để cải thiện kỹ năng lập trình của bạn.
Như vậy bạn vừa được ôn tập lại kiến thức lý thuyết lại vừa được thực hành và luyện tập lại những gì mình vừa được học!
>> LeetCode cùng với HackerRank đang trở thành 2 nền tảng giúp lập trình viên học thuật toán và cấu trúc dữ liệu tốt nhất hiện nay.
Tất cả bài học đều được thiết kế theo module Learn trên LeetCode nên nội dung kiến thức sẽ rất sát với thực tế.
LeetCode còn cung cấp cho ta những đánh giá về thời gian cũng như không gian bộ nhớ.
Từ đó ta có thể tối ưu code của mình hơn.
Với hàng trăm bộ test, chắc chắn ta không còn lăn về bài code của mình chỉ bằng cách đọc code một cách thuần tuý nữa.
CHÚC CÁC BẠN THÀNH CÔNG!
Nội dung khóa học
Phần 1: Giới thiệu
Bài 1: Hướng dẫn xem video trên Unica
Bài 2: Giới thiệu khoá học
Bài 3: Nội dung của khoá học
Bài 4: Cách học của khoá học [QUAN TRỌNG]
Bài 5: Tham gia group giải bài tập [QUAN TRỌNG]
Bài 6: Hướng dẫn chạy và debug với Visual Studio Code
Bài 7: Hướng dẫn chạy và debug với IntelliJ
Bài 8: Cách làm bài và nộp bài trên LeetCode
Phần 2: Array and String | Mảng và Chuỗi
Bài 9: Duyệt mảng
Bài 10: Thêm/Chèn phần tử vào mảng
Bài 11: Xoá phần tử trong mảng
Bài 12: Kỹ thuật 2 con trỏ: Xoá phần tử trong mảng
Bài 13: Kỹ thuật 2 con trỏ: Thêm phần tử vào mảng
Bài 14: List và Array List trong Java
Bài 15: Làm việc với mảng 2 chiều
Bài 16: Giới thiệu về String, Character và char
Bài 17: Thực hành với String và Character
Bài 18: Làm quen với StringBuilder
Phần 3: Sorting (1) | Các thuật toán sắp xếp (Phần 1)
Bài 19: Giới thiệu
Bài 20: Bubble Sort | Sắp xếp nỏi bọt
Bài 21: Selection Sort | Sắp xếp chọn
Bài 22: Insertion Sort | Sắp xếp chèn
Bài 23: Bài toán tìm số lớn thứ 3
Phần 4: Recursion | Đệ quy
Bài 24: Giới thiệu về đệ quy | Định nghĩa đệ quy
Bài 25: Đặc điểm của đệ quy
Bài 26: Thực hành 1: Tính giai thừa (phần 1)
Bài 27: Thực hành 1: Tính giai thừa (phần 2)
Bài 28: Thực hành 2: Tính số Fibonacy (phần 1)
Bài 29: Thực hành 2: Tính số Fibonacy (phần 2)
Bài 30: Một số bài toán khác
Bài 31: Phân loại đệ quy (phần 1)
Bài 32: Phân loại đệ quy (phần 2)
Bài 33: Ưu điểm và nhược điểm của đệ quy
Bài 34: Tối ưu hoá đệ quy
Bài 35: Khử đệ quy
Bài 36: Nên sử dụng đệ quy khi nào?
Phần 5: Binary Search | Tìm kiếm nhị phân
Bài 37: Giới thiệu về Binary Search
Bài 38: Cài đặt Binary Search bằng vòng lặp
Bài 39: Cài đặt Binary Search bằng đệ quy
Bài 40: Đánh giá thuật toán
Phần 6: Sorting (2) | Các thuật toán sắp xếp (phần 2)
Bài 41: Merge Sort: Ý tưởng
Bài 42: Merge Sort: Cài đặt
Bài 43: Merge Sort: Testing
Bài 44: Quick Sort: Ý tưởng
Bài 45: Quick Sort: Cài đặt
Bài 46: Sử dụng thư viện sắp xếp trong Java
Phần 7: Độ phức tạp của thuật toán
Bài 47: Giới thiệu về Space Complexity
Bài 48: Giới thiệu về Time Complexity
Bài 49: Big O notation
Bài 50: Các độ phức tạp cơ bản
Bài 51: Thực hành 1: Giải thuật tìm kiếm tuần tự
Bài 52: Thực hành 2: Giải thuật Sắp xếp nổi bọt
Bài 53: Thực hành 3: Giải thuật Fibonaci
Bài 54: Thực hành 4: Giải thuật tìm kiếm nhị phân
Bài 55: Thực hành 5: Thuật toán Merge Sort
Bài 56: Thực hành 6: Thuật toán Quick Sort
Phần 8: Linked List | Danh sách liên kết
Bài 57: Giới thiệu Linked List
Bài 58: Cài đặt Linked List
Bài 59: Thêm phần tử vào đầu
Bài 60: Thêm phần tử vào cuối
Bài 61: Thêm phần tử vào giữa
Bài 62: Xoá phần tử ở đầu
Bài 63: Xoá phần tử ở cuối
Bài 64: Xoá phần tử ở giữa
Bài 65: Bài toán đảo ngược một Linked List (Sử dụng vòng lặp)
Bài 66: Bài toán đảo ngược một Linked List (Sử dụng đệ quy)
Phần 9: Stack and Queue | Ngăn xếp và Hàng đợi
Bài 67: Giới thiệu Stack & Queue
Bài 68: Các thao tác cơ bản với Stack & Queue
Bài 69: Tạo interface cho Stack và Queue
Bài 70: Cài đặt Stack với Mảng
Bài 71: Cài đặt Queue với Mảng
Bài 72: Cài đặt Stack với Linked List
Bài 73: Cài đặt Queue với Linked List
Bài 74: Stack trong Java
Bài 75: Queue trong Java
Phần 10: Hash Table | Set and Map
Bài 76: Giới thiệu về Hash Table
Bài 77: Design a Hash Function
Bài 78: Collision và cách xử lý
Bài 79: Ứng dụng của Hash Table
Bài 80: Design a Hash Set
Bài 81: Implement a HashSet (phần 1)
Bài 82: Implement a HashSet (phần 2)
Bài 83: Design a Hash Map
Bài 84: Implement a HashMap (phần 1)
Bài 85: Implement a HashMap (phần 2)
Bài 86: HashSet in Java
Bài 87: HashMap in Java
Phần 11: Tree | Cây
Bài 88: Giới thiệu về Tree, Binary Tree, Binary Search Tree
Bài 89: Xây dựng cây BST
Bài 90: Thêm một node vào cây BST (Vòng lặp)
Bài 91: Thêm một node vào cây BST (Đệ quy)
Bài 92: Xoá một node khỏi cây BST
Bài 93: Tìm kiếm trên cây BST
Bài 94: Duyệt cây theo 3 thứ tự (Lý thuyết)
Bài 95: Duyệt cây theo 3 thứ tự (Implement)
Bài 96: Bài toán tính chiều cao cây
Bài 97: Bài toán tính tổng trên cây
Phần 12: Graph | Đồ thị
Bài 98: Giới thiệu về Đồ thị
Bài 99: Giới thiệu về DFS - Tìm kiếm theo chiều sâu
Bài 100: Cài đặt DFS với Stack
Bài 101: Cài đặt DFS với đệ quy
Bài 102: Cài đặt BFS với Queue
Bài 103: Ứng dụng DFS: Tính số miền liên thông
Bài 104: Thuật toán Dijkstra (Tìm đường đi ngắn nhất): Lý thuyết
Bài 105: Thuật toán Dijkstra (Tìm đường đi ngắn nhất): Cài đặt
Bài 106: Tổng kết
Phần 13: Các CTDL và giải thuật NÂNG CAO
Bài 107: Bit Manipulation - Các thao tác xử lý với Bit
Bài 108: Backtracking - Thuật toán quay lui
Bài 109: External Sort[/tongquan]
[bando]https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d14895.8586897809!2d105.77983080781252!3d21.034099500000004!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3135ab421c765871%3A0xdaf2f296477de0c8!2zVW5pY2Eudm4gLSBI4buNYyBPbmxpbmUgbeG7jWkga-G7uSBuxINuZyB04burIGNodXnDqm4gZ2lh!5e0!3m2!1svi!2s!4v1675328418045!5m2!1svi!2s[/bando]
[video]https://www.youtube.com/embed/pzeg_pcNYJc[/video]
[xem360] [/xem360]
Bài 71: Cài đặt Queue với Mảng
Bài 72: Cài đặt Stack với Linked List
Bài 73: Cài đặt Queue với Linked List
Bài 74: Stack trong Java
Bài 75: Queue trong Java
Phần 10: Hash Table | Set and Map
Bài 76: Giới thiệu về Hash Table
Bài 77: Design a Hash Function
Bài 78: Collision và cách xử lý
Bài 79: Ứng dụng của Hash Table
Bài 80: Design a Hash Set
Bài 81: Implement a HashSet (phần 1)
Bài 82: Implement a HashSet (phần 2)
Bài 83: Design a Hash Map
Bài 84: Implement a HashMap (phần 1)
Bài 85: Implement a HashMap (phần 2)
Bài 86: HashSet in Java
Bài 87: HashMap in Java
Phần 11: Tree | Cây
Bài 88: Giới thiệu về Tree, Binary Tree, Binary Search Tree
Bài 89: Xây dựng cây BST
Bài 90: Thêm một node vào cây BST (Vòng lặp)
Bài 91: Thêm một node vào cây BST (Đệ quy)
Bài 92: Xoá một node khỏi cây BST
Bài 93: Tìm kiếm trên cây BST
Bài 94: Duyệt cây theo 3 thứ tự (Lý thuyết)
Bài 95: Duyệt cây theo 3 thứ tự (Implement)
Bài 96: Bài toán tính chiều cao cây
Bài 97: Bài toán tính tổng trên cây
Phần 12: Graph | Đồ thị
Bài 98: Giới thiệu về Đồ thị
Bài 99: Giới thiệu về DFS - Tìm kiếm theo chiều sâu
Bài 100: Cài đặt DFS với Stack
Bài 101: Cài đặt DFS với đệ quy
Bài 102: Cài đặt BFS với Queue
Bài 103: Ứng dụng DFS: Tính số miền liên thông
Bài 104: Thuật toán Dijkstra (Tìm đường đi ngắn nhất): Lý thuyết
Bài 105: Thuật toán Dijkstra (Tìm đường đi ngắn nhất): Cài đặt
Bài 106: Tổng kết
Phần 13: Các CTDL và giải thuật NÂNG CAO
Bài 107: Bit Manipulation - Các thao tác xử lý với Bit
Bài 108: Backtracking - Thuật toán quay lui
Bài 109: External Sort[/tongquan]
[bando]https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d14895.8586897809!2d105.77983080781252!3d21.034099500000004!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3135ab421c765871%3A0xdaf2f296477de0c8!2zVW5pY2Eudm4gLSBI4buNYyBPbmxpbmUgbeG7jWkga-G7uSBuxINuZyB04burIGNodXnDqm4gZ2lh!5e0!3m2!1svi!2s!4v1675328418045!5m2!1svi!2s[/bando]
[video]https://www.youtube.com/embed/pzeg_pcNYJc[/video]
[xem360]