Two City Scheduling

There are 2N people a company is planning to interview. The cost of flying the i-th person to city A is costs[i][0], and the cost of flying the i-th person to city B is costs[i][1].

Return the minimum cost to fly every person to a city such that exactly N people arrive in each city.

Example 1:

Input: [[10,20],[30,200],[400,50],[30,20]]
Output: 110
Explanation: 
The first person goes to city A for a cost of 10.
The second person goes to city A for a cost of 30.
The third person goes to city B for a cost of 50.
The fourth person goes to city B for a cost of 20.

The total minimum cost is 10 + 30 + 50 + 20 = 110 to have half the people interviewing in each city.

Note:

  1. 1 <= costs.length <= 100

  2. It is guaranteed that costs.length is even.

  3. 1 <= costs[i][0], costs[i][1] <= 1000

class Solution {
    public int twoCitySchedCost(int[][] costs) {
        int sumToA = 0;
        int[] refund = new int[costs.length];
        for (int i = 0; i < costs.length; i++) {
            sumToA += costs[i][0];
            refund[i] = costs[i][1] - costs[i][0];
        }
        Arrays.sort(refund);

        for (int i = 0; i < refund.length / 2; i++)
            sumToA += refund[i];

        return sumToA;
    }
}

Last updated