Đếm số lần xuất hiện của các phần tử trong mảng C/C++

Đếm số lần xuất hiện của các phần tử trong mảng là một bài tập lập trình giúp các bạn sinh viên biết được về cấu trúc dữ liệu từ điển. Đây là bài tập đơn giản và có thể có nhiều cách giải quyết khác nhau. Tùy vào dữ liệu của bài toán, chúng ta cần có những phương pháp khác nhau để có được đáp án chính xác. 

Hãy cùng Nguyễn Văn Hiếu Blog đi tìm các cách giải khác nhau cho bài toán này nhé. Phía cuối mình sẽ có code cho mỗi cách mà mình trình bày.

Phát biểu bài toán

Cho một mảng 1 chiều có n phần tử. Hãy đếm số lần xuất hiện của từng phần tử trong mảng.

Ví dụ: Với n = 5a[] = {1, 2, 3, 1, 2}. Khi đó:

  • Số 1 xuất hiện 2 lần
  • Số 2 xuất hiện 2 lần
  • Số 3 xuất hiện 1 lần

Ý tưởng giải bài toán

Cách 1: Sử dụng chỉ số mảng làm key

Để đếm số lần xuất hiện của các phần tử trong mảng, ta cần lưu ý tới phạm vi giá trị của các phần tử trong mảng.

Nếu đề bài đảm bảo các phần tử trong mảng a[i] >= 0 và a[i] < 1000.000(1000.000 ở đây là ví dụ).

Nếu giá trị thỏa mãn không âm và nằm trong phạm vi có thể khai báo mảng bằng giá trị lớn nhất: Chẳng hạn count[1000000] cho ví dụ trên. Khi đó, ta sẽ dùng chỉ số mảng i để đếm số lần xuất hiện của giá trị i.

Ví dụ: Với n = 5a[] = {1, 2, 3, 1, 2}. Khi đó:

  1. a[0] = 0
  2. a[1] = 2
  3. a[2] = 2
  4. a[3] = 1

Cách 2: Sử dụng cấu trúc dữ liệu map trong C++

Với cách này, ta sẽ sử dụng cấu trúc dữ liệu map<key, value> để đếm. Khi đó value sẽ lưu số lần xuất hiện của key. Bạn xem code để hiểu cách triển khai nhé.

Cách 3: Sắp xếp, sau đó đếm

Với cách này bạn tiến hành sắp xếp mảng theo chiều tăng dần.

Code đếm số lần xuất hiện của các phần tử

Cách 1:

Output:

Cách 2:

Ouput:

Cách 3:

Dưới đây mình sử dụng hàm std:::sort trong thư viện algorithm C++.

Output:

Chúc các bạn học tốt!

avatar
  Subscribe  
Notify of