Một số duy nhất là gì? Cách tìm một số duy nhất cực dễ
Xin chào các bạn, hôm nay tôi muốn chia sẻ với các bạn một chủ đề khá thú vị mà tôi vừa mới thực hiện gần đây, đó là về “một số duy nhất”. Nghe có vẻ đơn giản phải không, nhưng thực tế quá trình thực hiện lại không hề dễ dàng như tôi tưởng tượng ban đầu. Hãy cùng theo dõi hành trình của tôi nhé!
Mọi chuyện bắt đầu khi tôi nhận được một yêu cầu khá “khoai” từ khách hàng. Họ muốn tôi tìm ra “một số duy nhất” từ một tập hợp dữ liệu khổng lồ. Ban đầu, tôi nghĩ rằng việc này chắc cũng chỉ là “muỗi”, dùng vài dòng code là xong. Thế nhưng, khi bắt tay vào làm, tôi mới thấy “đời không như là mơ”.
Đầu tiên, tôi thử dùng phương pháp đơn giản nhất, đó là duyệt qua từng phần tử của tập hợp và kiểm tra xem nó có xuất hiện lần thứ hai hay không. Nghe có vẻ “ổn áp” đấy, nhưng khi chạy thử, tôi mới tá hỏa vì thời gian chạy quá lâu. Tập dữ liệu lớn quá, cách này không “khả thi” rồi.
Không nản chí, tôi bắt đầu “vắt óc” suy nghĩ cách khác. Tôi nhớ đến kiến thức về các cấu trúc dữ liệu, và “bóng đèn” trong đầu tôi lóe sáng! Tôi quyết định sử dụng bảng băm (Hash Table). Với bảng băm, tôi có thể kiểm tra sự xuất hiện của một số chỉ trong thời gian O(1), nhanh hơn rất nhiều so với cách duyệt từng phần tử.
- Bước 1: Tôi tạo một bảng băm rỗng.
- Bước 2: Duyệt qua từng phần tử của tập hợp.
- Bước 3: Với mỗi phần tử, tôi kiểm tra xem nó đã có trong bảng băm hay chưa.
- Bước 4: Nếu chưa có, tôi thêm nó vào bảng băm với giá trị là 1.
- Bước 5: Nếu đã có, tôi tăng giá trị của nó trong bảng băm lên 1.
- Bước 6: Sau khi duyệt xong, tôi kiểm tra lại bảng băm, tìm xem số nào có giá trị là 1.
Với cách này, tôi đã “xử đẹp” được yêu cầu của khách hàng. Thời gian chạy nhanh hơn rất nhiều, và tôi cũng học được thêm một bài học quý giá về tầm quan trọng của việc lựa chọn cấu trúc dữ liệu phù hợp.
Qua câu chuyện này, tôi muốn nhắn nhủ với các bạn rằng, đừng bao giờ “coi thường” những bài toán tưởng chừng như đơn giản. Hãy luôn “cảnh giác” và chuẩn bị cho mình những “vũ khí” lợi hại để “chiến đấu”. Và quan trọng hơn cả, đừng bao giờ bỏ cuộc, hãy luôn tìm tòi, học hỏi để nâng cao kỹ năng của bản thân.
Cảm ơn các bạn đã theo dõi bài chia sẻ của tôi. Hy vọng nó sẽ có ích cho các bạn. Hẹn gặp lại trong những bài viết tiếp theo!