How to remove elements of a list that are repeated less than k times in C#

1 Answer

0 votes
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static List<int> FilterByFrequency(List<int> list, int k) {
        // Count occurrences of each number
        var counts = list
            .GroupBy(x => x)
            .ToDictionary(g => g.Key, g => g.Count());

        // Keep only elements that appear at least k times
        return list
            .Where(x => counts[x] >= k)
            .ToList();
    }

    static void Main()
    {
        var lst = new List<int>
        {
            1, 2, 2, 3, 3, 3, 4, 4, 4, 4,
            5, 5, 6, 7, 7, 7, 7, 8, 8, 8
        };

        int k = 3;

        var result = FilterByFrequency(lst, k);

        Console.WriteLine(string.Join(", ", result));
    }
}



/*
run:

3, 3, 3, 4, 4, 4, 4, 7, 7, 7, 7, 8, 8, 8

*/

 



answered Feb 11 by avibootz
...