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. 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) {
        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个第一个,剩下一半选第二个。

https://leetcode.com/problems/two-city-scheduling/discuss/278898/Java-2ms-sorting-solution-with-explanation

Greedy思想

以上是关于1029. Two City Scheduling的主要内容,如果未能解决你的问题,请参考以下文章

1029. Two City Scheduling

leetcode1029. Two City Scheduling

LeetCode4. Median of Two Sorted Arrays---vector实现O(log(m+n)--- findkth

测试变量向量并在表上求和,在R中创建新列

D. Two Paths---cf14D

YII - 向dropDownList添加另一个属性