Mô tả

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 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 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!

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.

Yêu cầu

Nội dung khoá học

14 sections

Phần 1: Giới thiệu

9 lectures
Bài 1: Hướng dẫn xem video trên Unica
01:06
Bài 2: Giới thiệu khoá học
06:30
Bài 3: Nội dung của khoá học
05:23
Bài 4: Cách học của khoá học [QUAN TRỌNG]
03:08
Bài 5: Tham gia group giải bài tập [QUAN TRỌNG]
07:13
Bài 6: Hướng dẫn chạy và debug với Visual Studio Code
14:00
Bài 7: Hướng dẫn chạy và debug với IntelliJ
11:49
Bài 8: Cách làm bài và nộp bài trên LeetCode
08:22
Bài 9: Tham gia group Discord
00:00

Phần 2: Array and String | Mảng và Chuỗi

10 lectures
Bài 10: Duyệt mảng
27:47
Bài 11: Thêm/Chèn phần tử vào mảng
20:41
Bài 12: Xoá phần tử trong mảng
14:42
Bài 13: Kỹ thuật 2 con trỏ: Xoá phần tử trong mảng
09:17
Bài 14: Kỹ thuật 2 con trỏ: Thêm phần tử vào mảng
17:53
Bài 15: List và Array List trong Java
10:08
Bài 16: Làm việc với mảng 2 chiều
21:01
Bài 17: Giới thiệu về String, Character và char
22:32
Bài 18: Thực hành với String và Character
20:22
Bài 19: Làm quen với StringBuilder
06:36

Phần 3: Sorting (1) | Các thuật toán sắp xếp (Phần 1)

5 lectures
Bài 20: Giới thiệu
00:21
Bài 21: Bubble Sort | Sắp xếp nỏi bọt
09:25
Bài 22: Insertion Sort | Sắp xếp chèn
07:07
Bài 23: Selection Sort | Sắp xếp chọn
04:50
Bài 24: Bài toán tìm số lớn thứ 3
14:19

Phần 4: Recursion | Đệ quy

14 lectures
Bài 25: Giới thiệu về đệ quy | Định nghĩa đệ quy
02:11
Bài 26: Đặc điểm của đệ quy
01:17
Bài 27: Thực hành 1: Tính giai thừa (phần 1)
03:39
Bài 28: Thực hành 1: Tính giai thừa (phần 2)
08:05
Bài 29: Thực hành 2: Tính số Fibonacy (phần 1)
05:40
Bài 30: Thực hành 2: Tính số Fibonacy (phần 2)
05:52
Bài 31: Một số bài toán khác
02:19
Bài 32: Phân loại đệ quy (phần 1)
03:41
Bài 33: Phân loại đệ quy (phần 2)
01:22
Bài 34: Ưu điểm và nhược điểm của đệ quy
01:55
Bài 35: Tối ưu hoá đệ quy
05:47
Bài 36: Khử đệ quy
03:39
Bài 37: Nên sử dụng đệ quy khi nào?
01:19
Bài 38: Hai cách cài đặt Đệ quy
14:48

Phần 5: Binary Search | Tìm kiếm nhị phân

4 lectures
Bài 39: Giới thiệu về Binary Search
07:42
Bài 40: Cài đặt Binary Search bằng vòng lặp
10:04
Bài 41: Cài đặt Binary Search bằng đệ quy
07:24
Bài 42: Đánh giá thuật toán
03:37

Phần 6: Sorting (2) | Các thuật toán sắp xếp (phần 2)

6 lectures
Bài 43: Merge Sort: Ý tưởng
03:59
Bài 44: Merge Sort: Cài đặt
13:40
Bài 45: Merge Sort: Testing
08:39
Bài 46: Quick Sort: Ý tưởng
13:27
Bài 47: Quick Sort: Cài đặt
18:35
Bài 48: Sử dụng thư viện sắp xếp trong Java
18:48

Phần 7: Độ phức tạp của thuật toán

10 lectures
Bài 49: Giới thiệu về Space Complexity
07:31
Bài 50: Giới thiệu về Time Complexity
07:05
Bài 51: Big O notation
07:47
Bài 52: Các độ phức tạp cơ bản
06:43
Bài 53: Thực hành 1: Giải thuật tìm kiếm tuần tự
01:58
Bài 54: Thực hành 2: Giải thuật Sắp xếp nổi bọt
05:15
Bài 55: Thực hành 3: Giải thuật Fibonaci
04:42
Bài 56: Thực hành 4: Giải thuật tìm kiếm nhị phân
06:04
Bài 57: Thực hành 5: Thuật toán Merge Sort
10:12
Bài 58: Thực hành 6: Thuật toán Quick Sort
06:04

Phần 8: Linked List | Danh sách liên kết

10 lectures
Bài 59: Giới thiệu Linked List
10:48
Bài 60: Cài đặt Linked List
06:56
Bài 61: Thêm phần tử vào đầu
04:30
Bài 62: Thêm phần tử vào cuối
05:04
Bài 63: Thêm phần tử vào giữa
09:53
Bài 64: Xoá phần tử ở đầu
02:17
Bài 65: Xoá phần tử ở cuối
06:39
Bài 66: Xoá phần tử ở giữa
13:31
Bài 67: Bài toán đảo ngược một Linked List (Sử dụng vòng lặp)
12:09
Bài 68: Bài toán đảo ngược một Linked List (Sử dụng đệ quy)
23:16

Phần 9: Stack and Queue | Ngăn xếp và Hàng đợi

9 lectures
Bài 69: Giới thiệu Stack & Queue
01:45
Bài 70: Các thao tác cơ bản với Stack & Queue
03:39
Bài 71: Tạo interface cho Stack và Queue
03:24
Bài 72: Cài đặt Stack với Mảng
10:28
Bài 73: Cài đặt Queue với Mảng
11:59
Bài 74: Cài đặt Stack với Linked List
12:21
Bài 75: Cài đặt Queue với Linked List
11:01
Bài 76: Stack trong Java
15:45
Bài 77: Queue trong Java
14:13

Phần 10: Hash Table | Set and Map

12 lectures
Bài 78: Giới thiệu về Hash Table
05:20
Bài 79: Design a Hash Function
08:21
Bài 80: Collision và cách xử lý
02:30
Bài 81: Ứng dụng của Hash Table
04:40
Bài 82: Design a Hash Set
06:14
Bài 83: Implement a HashSet (phần 1)
08:37
Bài 84: Implement a HashSet (phần 2)
11:25
Bài 85: Design a Hash Map
06:57
Bài 86: Implement a HashMap (phần 1)
12:02
Bài 87: Implement a HashMap (phần 2)
06:55
Bài 88: HashSet in Java
12:57
Bài 89: HashMap in Java
17:58

Phần 11: Tree | Cây

10 lectures
Bài 90: Giới thiệu về Tree, Binary Tree, Binary Search Tree
11:19
Bài 91: Xây dựng cây BST
08:13
Bài 92: Thêm một node vào cây BST (Vòng lặp)
18:46
Bài 93: Thêm một node vào cây BST (Đệ quy)
06:39
Bài 94: Xoá một node khỏi cây BST
21:19
Bài 95: Tìm kiếm trên cây BST
03:32
Bài 96: Duyệt cây theo 3 thứ tự (Lý thuyết)
06:28
Bài 97: Duyệt cây theo 3 thứ tự (Implement)
10:20
Bài 98: Bài toán tính chiều cao cây
07:15
Bài 99: Bài toán tính tổng trên cây
13:29

Phần 12: Graph | Đồ thị

8 lectures
Bài 100: Giới thiệu về Đồ thị
17:12
Bài 101: Giới thiệu về DFS - Tìm kiếm theo chiều sâu
04:29
Bài 102: Cài đặt DFS với Stack
06:42
Bài 103: Cài đặt DFS với đệ quy
07:00
Bài 104: Cài đặt BFS với Queue
05:53
Bài 105: Ứng dụng DFS: Tính số miền liên thông
14:53
Bài 106: Thuật toán Dijkstra (Tìm đường đi ngắn nhất): Lý thuyết
15:53
Bài 107: Thuật toán Dijkstra (Tìm đường đi ngắn nhất): Cài đặt
21:20

Phần 13: Heap | Đống

10 lectures
Bài 108: Giới thiệu về Heap
05:31
Bài 109: Biểu diễn Heap
11:33
Bài 110: Các thao tác với Heap
02:46
Bài 111: Khởi tạo Heap
03:59
Bài 112: Thêm phần tử vào Heap
07:01
Bài 113: Xóa phần tử ở Root
13:58
Bài 114: Xóa phần tử ở vị trí bất kỳ
06:59
Bài 115: Test trên HackerRank
06:59
Bài 116: Heap trong Java
06:56
Bài 117: Cách sử dụng và bài tập
02:33

Phần 14: Các CTDL và giải thuật NÂNG CAO

5 lectures
Bài 118: Bit Manipulation - Các thao tác xử lý với Bit
03:40
Bài 119: Backtracking - Thuật toán quay lui
37:24
Bài 120: Dynamic Programming - Quy Hoạch Động
13:48
Bài 121: Trie / Prefix Tree - Cây tiền tố
21:43
Bài 122: Tổng kết
02:35

Đánh giá của học viên

Chưa có đánh giá
Course Rating
5
0%
4
0%
3
0%
2
0%
1
0%

Bình luận khách hàng

Viết Bình Luận

Bạn đánh giá khoá học này thế nào?

image

Đăng ký get khoá học Udemy - Unica - Gitiho giá chỉ 50k!

Get khoá học giá rẻ ngay trước khi bị fix.