×

Tìm phần tử xuất hiện nhiều nhất trong mảng C#

Để tìm phần tử xuất hiện nhiều nhất trong một mảng số nguyên trong C#, bạn có thể sử dụng một từ điển (Dictionary) để lưu trữ tần suất xuất hiện của từng phần tử. Sau đó, bạn duyệt qua từ điển để tìm phần tử có tần suất lớn nhất. Dưới đây là ví dụ chi tiết về cách thực hiện việc này.

Mã nguồn C# để tìm phần tử xuất hiện nhiều nhất trong một mảng số nguyên

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Nhập vào một mảng số nguyên
        int[] numbers = { 1, 3, 2, 3, 4, 3, 2, 5, 2 };

        // Tìm phần tử xuất hiện nhiều nhất trong mảng
        int mostFrequent = FindMostFrequentElement(numbers);

        // In ra kết quả
        Console.WriteLine("Phần tử xuất hiện nhiều nhất trong mảng là: " + mostFrequent);
    }

    static int FindMostFrequentElement(int[] arr)
    {
        Dictionary<int, int> frequency = new Dictionary<int, int>();
        int maxCount = 0;
        int mostFrequent = arr[0];

        // Duyệt qua từng phần tử trong mảng và đếm tần suất xuất hiện
        foreach (int num in arr)
        {
            if (frequency.ContainsKey(num))
            {
                frequency[num]++;
            }
            else
            {
                frequency[num] = 1;
            }

            // Cập nhật phần tử có tần suất xuất hiện lớn nhất
            if (frequency[num] > maxCount)
            {
                maxCount = frequency[num];
                mostFrequent = num;
            }
        }

        return mostFrequent;
    }
}

Giải thích:

  • Mảng numbers:

    • Chứa các số nguyên, trong đó một số phần tử có thể xuất hiện nhiều lần.
  • Hàm FindMostFrequentElement:

    • Dictionary<int, int> frequency: Tạo một từ điển để lưu trữ tần suất xuất hiện của từng phần tử.
    • foreach (int num in arr): Duyệt qua từng phần tử trong mảng.
    • if (frequency.ContainsKey(num)): Nếu phần tử đã tồn tại trong từ điển, tăng tần suất của nó lên 1.
    • else { frequency[num] = 1; }: Nếu phần tử chưa tồn tại, thêm nó vào từ điển với tần suất là 1.
    • if (frequency[num] > maxCount): Nếu tần suất của phần tử hiện tại lớn hơn maxCount, cập nhật maxCountmostFrequent.
    • return mostFrequent;: Trả về phần tử có tần suất xuất hiện lớn nhất.

Cách chạy chương trình:

  1. Sử dụng Visual Studio:
    • Mở Visual Studio.
    • Tạo một dự án mới: File -> New -> Project -> Chọn "Console App (.NET Core)" hoặc "Console App (.NET Framework)".
    • Sao chép và dán mã nguồn vào tệp Program.cs.
    • Nhấn nút "Start" hoặc "Run" để chạy chương trình.

Comments