#30daychallenge (10) | Tạo minstack

Mình thấy cái tiêu đề hơi dài, nên #30daychalllenge chính là 30 ngày chống COVID cùng Leetcode, bởi mình tin sau này mình sẽ có nhiều thử thách cho bản thân nữa.

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
  • push(x) -- Push element x onto stack.
  • pop() -- Removes the element on top of the stack.
  • top() -- Get the top element.
  • getMin() -- Retrieve the minimum element in the stack.
Đấy, đề bài đơn giản thế thôi, tạo một cấu trúc dữ liệu tên là MinStack. Ngày cũ tôi implement bài này bằng C rồi, sang Java không có khái niệm con trỏ thì càng dễ hơn. Điểm nhấn chính để làm bài này chính là mỗi node sẽ lưu giữ cái giá trị min đến thời điểm đấy, để sau này Pop() thì không phải cập nhật lại Min. Cứ xóa là min nó tự cập nhật theo.

Class node sẽ như thế này:


Do mấy bài về SOLID, Design Pattern, Code smells mà tôi sẽ viết code dài hơn khá nhiều, nếu cứ public tất cả nhìn nó ngượng lắm dù ngắn đi rất rất nhiều, mong bạn thông cảm, vì dù chỉ là 1 statement tôi cũng sẽ tạo một block cho nó :((.


Hết rồi, hẹn gặp Leetcode vào ngày mai. Cảm ơn bạn !

Nhận xét

Bài đăng phổ biến từ blog này

Hiểu về Norm Regularization

Faceswap & state-of-the-art (SOTA)