01/10/2018, 14:24

Xin hướng giải quyết bài tập lập trình C trên trang hacker rank

đề bài đưa ra nhập 1 số n đại diện cho số mảng.
sau đó tìm các phần tử trùng nhau trong số mảng đó và in ra. em đã làm nhưng ko ra vấn đề, xin mọi người cho em hướng giải quyết với ạ.
em cảm ơn.

kiencon viết 16:38 ngày 01/10/2018

Gộp lại thành 1 mảng.
rồi tiến hành sort mảng vừa gộp, dùng qsort hay heapsort j đó rồi tiến hành duyệt.
Nếu trong quá trình duyệt có n thằng liên tiếp bằng nhau thì in giá trị đó ra, nếu hết mảng mà ko có thì in none.
độ phức tạp là O(nlogn)

1 Vương Sỹ Thành viết 16:33 ngày 01/10/2018

Mình đã gép 3 mảng vào 1 mảng thứ 4, rồi duyệt mảng thứ 4. Trong vòng lặp thứ 2 bên trong mình so sánh nếu 2 phần tử cạnh nhau mà bằng nhau thì in nó ra.
Nhưng có 1 vấn đề nếu 1 số xuất hiện trng mảng a,b mà k có trong mảng c thì nó cũng vẫn in ra.
Mình muốn in ra các số xuất hiện cả trong 3 mảng. Nếu nó chỉ xuất hiện trong 2 mảng thì vẫn ko được.

Cảm ơn các bác trước.

viết 16:33 ngày 01/10/2018

Vậy đừng gộp, viết hàm tìm giao của 2 mảng rồi for từ từ

kiencon viết 16:34 ngày 01/10/2018

do chú code thằng duyệt không chính xác, đã nói nó phải xuất hiện 3 lần, chú duyệt vậy mới có 2 lần, fail là phải, code giao càng rắc rối hơn, mình nghĩ đây là cách tối ưu nhất, trừ trường hợp trong 1 mảng có 2 phần tử bằng nhau thì thuật toán sẽ k đúng nữa, cần chỉnh sửa 1 chút

Bài liên quan
0