01/10/2018, 09:10
Hỏi về Codefight?
Mấy bác cho em hỏi là cách tính thời gian trên web Codefight như thế nào ạ? em đã tính thời gian thấy vẫn dưới 500ms mà nó cứ báo em vượt quá thời gian qui định là sao ạ?
Bài liên quan
nó chạy thử chương trình của bạn và đếm số thao tác xảy ra. Quy ước mỗi thao tác loại A là bao nhiêu ms, mỗi thao tác loại B là bao nhiêu ms…
Chứ so sánh như bạn thì khập khiễng, máy khoẻ chạy cái vù, máy yếu có khi treo luôn :))
mới có bài đầu mà làm khó nhau quá đó h em toàn để ý kết quả chứ chưa quan tâm đến hiệu suất của thuật toán lắm
Nó có cả hidden test, code bạn xử lý ko tốt thì hidden test chạy chậm, thế thôi.
Test nào mục nào thế bạn, mình vào thử phát :))
link đề bài: https://codefights.com/interview/h8pq7aHrkYAbBLeRB/description
VL bác nhìn code của python này. Cứ nghĩ dùng java với set là nhanh lắm r ai ngờ python còn gọn hơn.
Nó tính theo độ phức tạp của thuật toán bạn nhé, google big O là ra
Bạn cứ làm arcade đã, cái đó là luyện tập từ dễ đến khó, chứ interview toàn mấy bài vừa vừa thôi
Mình không nghĩ vậy, như vậy thì nó vừa phải tự làm phức tạp vấn đề, lại còn không hiệu quả
Một anagram thì sẽ có tổng các phần tử giống nhau khi đổi từ kiểu char sang int, vd abc = cba = acb = 1 + 2 + 3 = 6 ( a = 1, b = 2 , c = 3) vậy ta cứ làm một cái hàm tính tổng cho chuỗi rồi add vào một set vì bản chất set chỉ chứa các phần tử không trùng nhau => chiều dài của set là số nhóm anagram. :v nhanh hơn nhiều chỉ cần 2 for.
Thế nếu
"abc"
với"bbb"
thì sao :))Mình làm là chuyển hết các dãy thành sắp xếp rồi, tức là
"abc"
hay"bac"
cũng như nhau, sau đó check xem nếu trùng thì loại 1 cái. Cuối cùng đếm số dãy khác nhau.ờ đúng rồi sai mấy cái hidden tự gạch :v