码迷,mamicode.com
首页 > 其他好文 > 详细

1029. Two City Scheduling

时间:2020-06-03 23:34:27      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:HERE   cost   win   开始   sch   problem   and   lse   div   

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

标签:HERE   cost   win   开始   sch   problem   and   lse   div   

原文地址:https://www.cnblogs.com/wentiliangkaihua/p/13040519.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!