【leetcode】1029. Two City Scheduling
题目如下:
There are
2N
people a company is planning to interview. The cost of flying thei
-th person to cityA
iscosts[i][0]
, and the cost of flying thei
-th person to cityB
iscosts[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
解题思路:我的方法是把costs按照costs[i][0] - costs[i][1]的差值从小到大排序,然后前面一半的人去A,后面一半的人去B。至于为什么这样做,我也说不上来,感觉。
代码如下:
class Solution(object): def twoCitySchedCost(self, costs): """ :type costs: List[List[int]] :rtype: int """ def cmpf(item1,item2): d1 = item1[0] - item1[1] d2 = item2[0] - item2[1] return d1 - d2 costs.sort(cmp=cmpf) res = 0 for i in range(len(costs)): if i < len(costs)/2: res += costs[i][0] else: res += costs[i][1] #print costs return res