公司計劃面試 2N 人。第 i 人飛往 A 市的費用爲 costs[i][0],飛往 B 市的費用爲 costs[i][1]。
返回將每個人都飛到某座城市的最低費用,要求每個城市都有 N 人抵達。
示例:
輸入:[[10,20],[30,200],[400,50],[30,20]]
輸出:110
解釋:
第一個人去 A 市,費用爲 10。
第二個人去 A 市,費用爲 30。
第三個人去 B 市,費用爲 50。
第四個人去 B 市,費用爲 20。
最低總費用爲 10 + 30 + 50 + 20 = 110,每個城市都有一半的人在面試。
從小到大排列 costs[i][0]-costs[i][1] (即i去A市與去B市的車票差額)。序列前面的人去A市花銷更小,序列後面的人去B市花銷更小。
static bool cmp(vector<int>a, vector<int>b) {
return (a[0] - a[1] )<( b[0] - b[1]);
}
int twoCitySchedCost(vector<vector<int>>& costs) {
sort(costs.begin(), costs.end(), cmp);
int sum = 0;
int i;
for (i = 0; i < costs.size() / 2; i++) sum += costs[i][0];
for (; i < costs.size(); i++) sum += costs[i][1];
return sum;
}