717584. Make best team for World Cup 2023

Medium

Here is the detailed markdown blog post for the problem "Make best team for World Cup 2023":

Make Best Team for World Cup 2023

Summary

The goal is to select a team of 11 players from a given set of football players, where each player has a unique skill score. The selected team should have the highest overall skill score possible. This problem involves sorting arrays and optimizing the selection process.

Detailed Explanation

To solve this problem, we can use a greedy approach. First, we sort all the players in descending order based on their skill scores. Then, we start selecting players for our team until we reach a total of 11 players. We always choose the player with the highest skill score next, ensuring that the overall skill score of our team is maximized.

Here's a step-by-step breakdown of the solution:

  1. Initialize an empty array to store the selected players.
  2. Sort all the players in descending order based on their skill scores.
  3. Iterate through the sorted array and add each player to our team until we have 11 players or more.
  4. Calculate the total skill score of our selected team.

Time complexity: O(n log n) due to sorting, where n is the number of players. Space complexity: O(1) as we only use a constant amount of space to store the selected players and their skills.

Optimized Solutions

Java

View on GeeksforGeeks
import java.util.Arrays;
import java.util.Comparator;

public class Main {
    public static void main(String[] args) {
        int[][] players = {{10, "Player1"}, {9, "Player2"}, {8, "Player3"}, {7, "Player4"},
                {6, "Player5"}, {5, "Player6"}, {4, "Player7"}, {3, "Player8"},
                {2, "Player9"}, {1, "Player10"}};

        int[][] selectedPlayers = selectBestTeam(players);

        System.out.println("Selected Players: ");
        for (int[] player : selectedPlayers) {
            System.out.println(player[0] + ": " + player[1]);
        }
    }

    public static int[][] selectBestTeam(int[][] players) {
        Arrays.sort(players, Comparator.comparingInt(a -> a[0]).reversed());
        int[][] selectedPlayers = new int[11][2];
        int totalSkillScore = 0;

        for (int i = 0; i < players.length; i++) {
            if (i >= 11) {
                break;
            }
            selectedPlayers[i] = players[i];
            totalSkillScore += players[i][0];
        }

        return selectedPlayers;
    }
}

DevExCode

Master coding interviews with Leetcode, system design, TechBit, QuickLearn, DevTips, Tech Battles, and career services.

© 2026 DevExCode. All rights reserved.