zoukankan      html  css  js  c++  java
  • 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思想

  • 相关阅读:
    linux端口开放指定端口的两种方法
    关于JqueryCheck选中获取数据
    ASP.NET MVC 简单分页代码
    ASP.NET MVC4分页Site.CSS
    SQL索引的优缺点
    SQL字段数据类型小技巧
    数据库强制完整性的机制
    WinFrom饼形图
    WinFrom折线图
    WinFrom柱形图
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/13040519.html
Copyright © 2011-2022 走看看