inflearn logo

Giải các bài toán LeetCode cốt lõi để vượt qua kỳ thi coding

LeetCode được hướng dẫn bởi Dale, một lập trình viên Hàn Quốc đang làm việc tại startup Silicon Valley, Mỹ! Đây không chỉ đơn thuần là khóa học cung cấp code đáp án, mà là khóa học giải bài tập LeetCode thực chiến, trong đó so sánh nhiều cách tiếp cận khác nhau cho từng bài toán, phân tích độ phức tạp về thời gian và không gian, đồng thời giải thích tại sao một lời giải nào đó lại hiệu quả hơn. Đầu tiên, viết cách tiếp cận trực quan nhất và phân tích độ phức tạp thời gian/không gian của phương pháp đó để xác định điểm nghẽn và điểm cần cải thiện, sau đó xem xét các cách tiếp cận khác nhau áp dụng các cấu trúc dữ liệu và kỹ thuật thuật toán đa dạng, so sánh sự khác biệt về hiệu suất cũng như ưu nhược điểm của từng phương pháp. Qua đó, khóa học giúp bạn trang bị khả năng giải quyết vấn đề để có thể tự thiết kế chiến lược giải quyết hiệu quả khi đối mặt với những bài toán mới.

(5.0) 2 đánh giá

60 học viên

Độ khó Cơ bản

Thời gian Không giới hạn

Python
Python
Coding Test
Coding Test
Algorithm
Algorithm
data-structure
data-structure
Python
Python
Coding Test
Coding Test
Algorithm
Algorithm
data-structure
data-structure

Bạn sẽ nhận được điều này sau khi học.

  • Hiểu các dạng bài tập cốt lõi thường xuyên xuất hiện trong kỳ thi lập trình và phỏng vấn

  • Khả năng đánh giá thuật toán và cấu trúc dữ liệu nào cần áp dụng khi nhìn vào bài toán

  • Điểm chuẩn để có thể tự mình tiếp tục giải các bài toán LeetCode

🧠 Phỏng vấn coding, tại sao lại luôn bị mắc kẹt ở những bài toán tương tự?

Bạn có đang giải đề LeetCode đều đặn nhưng
khi gặp bài toán mới lại không biết bắt đầu từ đâu không?

  • Ngay cả khi xem code đáp án cũng chỉ dừng lại ở "À, ra vậy"

  • Khi gặp bài toán biến thể một chút thì lại phải loay hoay từ đầu

  • Tình huống giải pháp quá chậm để đáp ứng giới hạn thời gian

Khóa học này được tạo ra cho những người đang gặp phải vấn đề này.


🎯 Cốt lõi của khóa học này: "Quy trình tư duy" chứ không phải "Đáp án"

Khóa học này không chỉ đơn thuần cho bạn xem code đáp án. Khóa học này không dạy "cách giải" bài toán LeetCode
mà dạy "cách tư duy".

Với mỗi bài toán, chúng ta sẽ lặp lại quy trình sau:

  1. Cách tiếp cận trực quan nhất (Bruteforce)

  2. Phân tích độ phức tạp thời gian / không gian của lời giải đó

  3. Hiểu rõ tại sao cách giải này không hiệu quả

  4. cách tiếp cận tốt hơn bằng cách sử dụng cấu trúc dữ liệu hoặc thuật toán

  5. So sánh nhiều cách giải để đưa ra giải pháp tối ưu cuối cùng

Với một bài toán
👉 Tối thiểu 2, nhiều nhất 5~6 cách tiếp cận được đề cập
Bạn có thể học một cách thấu đáo "tại sao cách giải này lại tốt".


💡 Những gì bạn sẽ có được khi học khóa học này

Thông qua khóa học này, bạn có thể kỳ vọng những thay đổi sau đây.

  • Ngay khi nhìn thấy bài toán
    Khả năng nắm bắt được nên sử dụng thuật toán / cấu trúc dữ liệu nào

  • Khả năng xây dựng chiến lược giải quyết thực tế
    → có tính đến giới hạn thời gian

  • Điểm chuẩn để có thể
    tự mình tiếp tục giải các bài toán LeetCode

Mục tiêu không chỉ là trở thành người "giải nhiều bài toán" mà là trở thành người "biết cách giải quyết vấn đề".


👤 Khóa học này dành cho những ai

  • Lập trình viên mới bắt đầu chuẩn bị phỏng vấn coding hoặc đang chuẩn bị lại

  • Hiểu được đề bài LeetCode nhưng không biết phải giải quyết như thế nào

  • Dành cho lập trình viên junior ~ middle hướng tới mục tiêu xin việc ở nước ngoài / phỏng vấn Big Tech

  • Người muốn rèn luyện tư duy giải quyết vấn đề thay vì chỉ học thuộc lòng



⚙️ Lưu ý trước khi học

Kiến thức tiên quyết

  • Cú pháp cơ bản của Python (biến, vòng lặp, hàm, list)


Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Lập trình viên chuẩn bị cho bài kiểm tra coding lần đầu hoặc chuẩn bị lại

  • Những bạn đã hiểu đề bài LeetCode nhưng không biết phải giải quyết như thế nào

  • Các bạn junior ~ middle quan tâm đến việc làm ở nước ngoài / phỏng vấn Big Tech

Cần biết trước khi bắt đầu?

  • Cơ bản về cú pháp Python

Xin chào
Đây là Dale Seo

Canada🇨🇦 Tôi là một nhà phát triển người Hàn Quốc🇺🇸 đang sống tại Toronto và làm việc cho một startup ở Thung lũng Silicon, Mỹ🇰🇷. Với hơn 18 năm kinh nghiệm làm việc trong ngành phát triển phần mềm, tôi đã trải qua nhiều lần chuyển việc từ các tập đoàn lớn trong nước đến các công ty công nghệ lớn toàn cầu, và trong quá trình đó, tôi đã chuẩn bị cũng như tham gia vô số bài kiểm tra lập trình.

Tôi tập trung vào việc giải thích bài kiểm tra coding không chỉ đơn thuần là "quá trình giải thật nhiều bài tập", mà là quá trình tư duy về cách nhìn nhận vấn đề và lựa chọn phương pháp tiếp cận nào. Thay vì chỉ đưa ra đáp án nhanh chóng, bài giảng của tôi được tiến hành theo cách cùng nhau trăn trở về việc tại sao lại có suy nghĩ như vậycó những lựa chọn thay thế nào khác không.

Tôi đang xây dựng các bài giảng theo phong cách luôn giải thích từng bước một từ những cách giải trực quan nhất, để ngay cả những người chưa quen với thuật toán và cấu trúc dữ liệu cũng có thể dễ dàng theo kịp mà không cảm thấy áp lực.

Thêm

Chương trình giảng dạy

Tất cả

70 bài giảng ∙ (21giờ 35phút)

Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

2 đánh giá

5.0

2 đánh giá

  • oiu79342790님의 프로필 이미지
    oiu79342790

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    30% đã tham gia

    Tôi xin chia sẻ phương pháp học tập hiệu quả nhất mà tôi cảm nhận được khi theo dõi bài giảng này của anh Dalle (Daeyoung). Đầu tiên, hãy thử giải quyết các vấn đề một lượt rồi nghe bài giảng. Có lẽ hầu hết mọi người sẽ nghĩ rằng đây chỉ là một bài giảng giải thuật thông thường. Điều quan trọng là khi đang nghe mà cảm thấy không giải được, đừng hành hạ bộ não cho đến khi giải ra bằng được, mà hãy cứ tiếp tục nghe bài giảng. Dù sao đây cũng là giai đoạn luyện tập, không cần thiết phải làm khổ bộ não đến mức làm mất đi sự hứng thú. Bạn chỉ cần nghĩ rằng "À, anh Dalle đã giải như vậy đấy~" rồi bỏ qua. (Tuy nhiên, việc gõ lại mã nguồn theo bài giảng là rất quan trọng). Điểm mấu chốt thực sự của bài giảng nằm ở lần học thứ hai. Khi nghe bài giảng lần thứ hai, đừng nghe giải thích ngay mà hãy tự mình giải quyết vấn đề trước. Trong khi giải, hãy vẽ sơ đồ hoặc viết chú thích ra giấy/máy tính. Cốt lõi là bắt đầu giải bằng phương pháp brute-force (vét cạn), sau đó tối ưu hóa từng bước một. 1. Trong quá trình tối ưu hóa, hãy ghi chép lại lý do tại sao bạn lại nghĩ ra cách tiếp cận đó. Mặc dù người ta nói rằng mã nguồn đã xem đáp án một lần sẽ khó quên, nhưng hãy cứ coi như đang tự đánh lừa bản thân, ghi lại trình tự tư duy tối ưu hóa đã được khắc sâu đó, hãy viết ra mối quan hệ nhân quả trong suy nghĩ của bạn. 2. Nếu không giải được, hãy ghi chép thật chi tiết xem bạn bị tắc nghẽn ở bước nào khi chuyển sang giai đoạn tiếp theo. Sau đó, khi nghe bài giảng, hãy ghi lại cách tư duy của anh Dalle để vượt qua bước đó và cùng gõ lại mã nguồn. Dù có là học thuộc lòng cũng không sao. (Bộ não của bạn không phân biệt được giữa sự thấu hiểu hoàn hảo và việc ghi nhớ hoàn hảo đâu). 3. Trước khi bắt đầu lần thứ ba, hãy học thật kỹ những ghi chép kiểu "nhật ký lỗi sai" mà bạn đã viết cho đến nay. Sau đó, hãy đặt giới hạn thời gian: Easy là 20 phút, Medium là 40 phút, Hard là 60 phút. Hãy thử giải trên LeetCode trong khi giải thích quá trình tư duy bằng lời nói hoặc bằng chú thích. Nếu quá trình giải thích không trôi chảy hoặc gặp chỗ tắc nghẽn, điều đó có nghĩa là đó là điểm yếu của bạn. Khi đó, hãy nghe lại bài giảng của vấn đề đó và luyện tập lặp đi lặp lại các dạng bài tương tự trên LeetCode để biến nó thành khuôn mẫu, điều này rất tốt cho việc bổ khuyết điểm yếu. Anh Daeyoung, người luôn chân thành trong việc giúp đỡ các hậu bối lập trình viên! Một lần nữa xin cảm ơn anh rất nhiều!

    • daleseo
      Giảng viên

      Tôi đã đọc kỹ những dòng chia sẻ đầy tâm huyết của bạn. Tôi cảm thấy rất hạnh phúc và xứng đáng khi những điều mình trăn trở trong quá trình chuẩn bị bài giảng đã được truyền tải trọn vẹn đến bạn. ㅠㅠ Nhìn vào phương pháp học tập mà bạn chia sẻ, tôi cảm nhận được bạn đang nỗ lực rất nhiều để xây dựng tư duy của riêng mình, thay vì chỉ đơn thuần là làm theo lời giải. Đặc biệt, việc bạn ghi lại lý do tại sao mình lại có suy nghĩ đó và chỉ ra rõ ràng những điểm mình còn vướng mắc là một cách làm cực kỳ đúng đắn. Đây chính là phương pháp học tập điển hình của những người đạt kết quả cao trong các kỳ thi coding thực tế. Với tư cách là người tạo ra bài giảng, khoảnh khắc tôi mong đợi nhất là khi học viên bắt đầu giải quyết được vấn đề theo cách riêng của họ. Thấy bạn đang tiến bước vững chắc trên lộ trình đó, bản thân tôi cũng như được tiếp thêm rất nhiều động lực. Ngoài ra, việc bạn chia sẻ kinh nghiệm cá nhân cho những người khác cũng sẽ là một sự giúp đỡ rất lớn! Chân thành cảm ơn những lời chia sẻ ấm áp của bạn. Tôi sẽ luôn ủng hộ quá trình học tập của bạn trong thời gian tới.

  • kimrla387445님의 프로필 이미지
    kimrla387445

    Đánh giá 1

    Đánh giá trung bình 5.0

    5

    26% đã tham gia

    Lời giải thực sự rất gọn gàng và tôi rất thích cách bạn giải thích chậm rãi để ngay cả người mới bắt đầu cũng có thể theo kịp. Đặc biệt, cách trình bày luồng tư duy từng bước một đã giúp ích cho tôi rất nhiều! Dù vẫn còn nhiều bài tập cần giải, nhưng tôi tin rằng điều này sẽ giúp ích rất nhiều cho việc chuẩn bị thi coding.

    • daleseo
      Giảng viên

      Cảm ơn bạn rất nhiều vì đã để lại những đánh giá quý báu về khóa học! Thật vui khi biết tốc độ giải bài và cách giải thích của mình đã giúp ích cho bạn. Lúc đầu số lượng câu hỏi có vẻ nhiều, nhưng nếu bạn cứ giải từng câu một, chắc chắn sẽ đến lúc bạn cảm thấy quen thuộc với chúng. Nếu có chỗ nào vướng mắc trong quá trình học, bạn cứ đặt câu hỏi bất cứ lúc nào nhé. 🙂

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!

Ưu đãi có thời hạn

53.130 ₫

30%

1.608.322 ₫