01/10/2018, 11:10
Giúp mình bài ở codefights với
Chương trình mình như hình không biết lỗi chỗ nào mong mọi người chỉ giúp.
Mình dịch tạm đề là tìm tích 2 phần tử liên tiếp lớn nhất trong mảng.
Bài liên quan
C#
Cho em hỏi sao mình không ++i chạy cho nhanh với i sao không khởi gán bằng 1 đỡ phải so sánh với output đầu ạ ?
Cách làm của b mình hiểu nhưng tại sao bài mình lại sai vậy nhìn mãi không biết lỗi ở đâu.
Bạn này không khoái i++ lắm =)) thực ra nên dùng ++i.
Vì đề bài cho là
2 ≤ inputArray.Length ≤ 10
, nếu quẩy luônint i = 1
thì có thể có trường hợp lỗi.Mình không học C tử tế nên mình không biết cách dùng toán tử
sizeof
.Nhưng nếu bạn muốn lấy về kích thước của vector, bạn chỉ cần
inputArray.size()
là được màTruy cập đến phần tử thì cũng chỉ cần
inputArray[i]
như mình thôi.Chào bạn, mình xin phép phân tích theo ý mình các dòng code của bạn trong **:
Nói rõ hơn, xuất hiện inputArray[size] là giá trị lạ và rất có thể inputArray[size] == 0.
Mình thấy Output sai của bạn có nguyên nhân từ dãy xen kẽ - +.
Mình nhận thấy lỗi của bạn ở đây là cho rằng sizeof§/sizeof(int) == sizeof(inputArray)/sizeof(int), trong khi: sizeof§/sizeof(int) == sizeof(inputArray)/sizeof(int) -1
Đề bài cho mảng vector rồi bạn dùng luôn vector đi, khuyến khích bỏ luôn cấp phát động khi không cần thiết như trường hợp này.
Hôm ngay mới nghịch đến codefight. Đóng góp được ý kiến nhỏ là i có thể start từ 1;
i = 1 cũng đúng, nhưng để i = 0 thì [i] * [i+1] nó nhìn đầy đặn hơn là [i] * [i-1]
Chỗ này chấm size ngay và luôn.
i < inputArray.size() - 1