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!