0%

June Leetcoding Challenge(6.3)

Two City Scheduling

Solution

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:

1
2
3
4
5
6
7
8
9
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

思路:

先将所有的人送到A城市,计算出来minCost,计算到A城市和B城市之间的差值,在将这些差值放入一个PriorityQueue,将前N/2个最小的数与minCost相加得到最后的结果

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public int twoCitySchedCost(int[][] costs) {
int minCost = 0;
int n = costs.length;
for(int i=0;i<n;i++){
minCost += costs[i][0];
}

PriorityQueue<Integer> minQ = new PriorityQueue<Integer>();
for(int i=0;i<n;i++){
minQ.add(costs[i][1]-costs[i][0]);
}
for(int i = 0;i<n/2;i++)
minCost = minCost + minQ.poll();
return minCost;
}
}
-------------本文结束感谢您的阅读-------------

本文标题:June Leetcoding Challenge(6.3)

文章作者:Jungle

发布时间:2020年06月03日 - 10:00

最后更新:2020年06月03日 - 10:32

原始链接:http://yoursite.com/2020/06/03/LeetCodeJune3rd/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Welcome to my other publishing channels