1029. Two City Scheduling
Posted wentiliangkaihua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1029. 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 <= costs.length <= 100
- It is guaranteed that
costs.length
is even. 1 <= costs[i][0], costs[i][1] <= 1000
class Solution { public int twoCitySchedCost(int[][] costs) { Arrays.sort(costs, (a, b) -> { return (a[0] - a[1]) - (b[0] - b[1]); }); int res = 0; for (int i = 0;i<costs.length;i++) { if (i < costs.length/2) { res += costs[i][0]; } else res += costs[i][1]; } return res; } }
一开始以为简单,结果想了半天也没做出来,倒是想到了给difference排序,但是为啥排序和怎么用没想明白。
后来想明白了:如果每一项都只选最小的那肯定会出问题,不满足每个city有N/2人。所以还需要考虑到两个的差值,先对差值排序,然后选N/2个第一个,剩下一半选第二个。
Greedy思想
以上是关于1029. Two City Scheduling的主要内容,如果未能解决你的问题,请参考以下文章
leetcode1029. Two City Scheduling
LeetCode4. Median of Two Sorted Arrays---vector实现O(log(m+n)--- findkth