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.

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)

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.

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

1 Like

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

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