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 ạ?

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 :))

1 Like

mới có bài đầu mà làm khó nhau quá :cry: đó 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.

1 Like

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.

1 Like

Nó tính theo độ phức tạp của thuật toán bạn nhé, google big O là ra :smiley:

1 Like

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

2 Likes

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 :stuck_out_tongue: tự gạch :v

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?