Đáp án cho bài tập Team formation trên Hackerrank

Đây là lời giải của em, em chỉ tò mò muốn biết là còn cách nào khác để giải bài này không ạ?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO; 

namespace Question10
{
    class Program
    {
        static void Main(String[] args)
        {
            int numCases = Int32.Parse(Console.ReadLine());
            while (numCases > 0)
            {
                List<int> skillList = Console.ReadLine().Split(' ').Skip(1).Select(Int32.Parse).ToList();
                skillList.Sort();

                List<int> teams = new List<int>();
                List<int> nextTeams = new List<int>();

                int minimum = skillList.Count;

                int i = 0;
                while (i < skillList.Count)
                {
                    int currentSkill = skillList[i];
                    while (i < skillList.Count && currentSkill == skillList[i])
                    {
                        int nextTeam = 0;
                        if (teams.Count > 0)
                        {
                            nextTeam = teams.Min();
                            teams.Remove(nextTeam);
                        }
                        nextTeams.Add(nextTeam + 1);
                        i++;
                    }

                    if (i < skillList.Count && skillList[i] - currentSkill == 1)
                    {
                        if (teams.Count > 0)
                        {
                            minimum = Math.Min(teams.Min(), minimum);
                        }

                        teams = nextTeams;
                        nextTeams = new List<int>();
                    }
                    else
                    {
                        if (teams.Count > 0)
                        {
                            minimum = Math.Min(teams.Min(), minimum);
                        }

                        if (nextTeams.Count > 0)
                        {
                            minimum = Math.Min(nextTeams.Min(), minimum);
                        }

                        teams = new List<int>();
                        nextTeams = new List<int>();
                    }
                }

                Console.WriteLine(minimum);

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