LeetCode 2561. 重排水果 C#
原题链接
困难
作者:
hpstory
,
2023-02-06 21:31:03
,
所有人可见
,
阅读 97
C# 代码
public class Solution {
public long MinCost(int[] basket1, int[] basket2) {
Dictionary<int, int> dict = new Dictionary<int, int>();
int n = basket1.Length;
for (int i = 0; i < n; i++){
if (!dict.ContainsKey(basket1[i])) dict.Add(basket1[i], 0);
dict[basket1[i]]++;
if (!dict.ContainsKey(basket2[i])) dict.Add(basket2[i], 0);
dict[basket2[i]]--;
}
List<int> fruits = new List<int>();
int min = int.MaxValue;
foreach (var kv in dict){
if (kv.Value % 2 == 1) return -1;
min = Math.Min(min, kv.Key);
for (int i = 0; i < Math.Abs(kv.Value) / 2; i++){
fruits.Add(kv.Key);
}
}
fruits.Sort();
long result = 0;
int m = fruits.Count / 2;
for (int i = 0; i < m; i++){
result += Math.Min(fruits[i], min * 2);
}
return result;
}
}