題目描述:
公司計畫面試 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,每個城市都有一半的人在面試。
提示
1 <= costs.length <= 100
costs.length 為偶數
1 <= costs[i][0], costs[i][1] <= 100
方法1:
(1)貪心;
(2)將原陣列的元素根據到兩個城市的成本的差值的絕對值進行排序,則從頭到尾遍歷排序後的陣列,到那個城市的成本低,就到那個城市,知道到達某個城市的人數達到了限制的一半,則將剩下人都安排到去另乙個城市;
class
solution);
int count_a=
0,count_b=0;
//統計到兩個城市的人數
int sum_a=
0,sum_b=0;
//統計到兩個城市的成本
int index=0;
//遍歷陣列的索引
while
(indexsize()
)else
++index;
if(count_a*
2==costs.
size()
||count_b*
2==costs.
size()
)}//將剩餘的人安排到另乙個城市
if(count_a*
2==costs.
size()
)}else
}return sum_a+sum_b;
//返回總的成本}}
;
方法2:
主要思路:
(1)同樣是貪心,只不過排序的函式不同,直接根據差異,將其分成前後兩組進行操作;
class
solution);
int sum_a=
0,sum_b=0;
int end=costs.
size()
/2;for
(int i=
0;i++i)
return sum_a+sum_b;}}
;
1029 兩地排程
公司計畫面試 2n 人。第 i 人飛往 a 市的費用為 costs i 0 飛往 b 市的費用為 costs i 1 返回將每個人都飛到某座城市的最低費用,要求每個城市都有 n 人抵達。示例 輸入 10,20 30,200 400,50 30,20 輸出 110 解釋 第乙個人去 a 市,費用為 1...
leetcode 1029 兩地排程
兩地排程 公司計畫面試 2n 人。第 i 人飛往 a 市的費用為 costs i 0 飛往 b 市的費用為 costs i 1 返回將每個人都飛到某座城市的最低費用,要求每個城市都有 n 人抵達。示例 輸入 10,20 30,200 400,50 30,20 輸出 110 解釋 第乙個人去 a 市,...
leetcode 1029 兩地排程(貪心)
題目描述 公司計畫面試 2n 人。第 i 人飛往 a 市的費用為 costs i 0 飛往 b 市的費用為 costs i 1 返回將每個人都飛到某座城市的最低費用,要求每個城市都有 n 人抵達。題解 個人思路 為了近可能的降低費用,我們應該優先安排飛往a b兩市費用差距最大的去費用較小的市,以此來...