Skip to content

Commit 4849db3

Browse files
authored
Update rearranging_fruits.py
1 parent c308b24 commit 4849db3

File tree

1 file changed

+37
-27
lines changed

1 file changed

+37
-27
lines changed

greedy_methods/rearranging_fruits.py

Lines changed: 37 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,40 @@
1010
from typing import List
1111
from collections import defaultdict
1212

13-
14-
class Solution:
15-
def minCost(self, basket1: List[int], basket2: List[int]) -> int:
16-
n = len(basket1)
17-
freq = defaultdict(int)
18-
mn = float("inf")
19-
for i in range(n):
20-
freq[basket1[i]] += 1
21-
freq[basket2[i]] -= 1
22-
mn = min(mn, basket1[i], basket2[i])
23-
24-
to_swap = []
25-
for j, k in freq.items():
26-
if k % 2 != 0:
27-
return -1
28-
to_swap += [j] * (abs(k) // 2)
29-
30-
to_swap.sort()
31-
res = 0
32-
for i in range(len(to_swap) // 2):
33-
res += min(to_swap[i], 2 * mn)
34-
35-
return res
36-
37-
38-
s = Solution()
39-
print(s.minCost([4, 2, 2, 2], [1, 4, 1, 2])) # Output: 1
13+
def min_cost(basket1: List[int], basket2: List[int]) -> int:
14+
n = len(basket1)
15+
freq = defaultdict(int)
16+
mn = float("inf")
17+
18+
for i in range(n):
19+
freq[basket1[i]] += 1
20+
freq[basket2[i]] -= 1
21+
mn = min(mn, basket1[i], basket2[i])
22+
23+
to_swap = []
24+
for j, k in freq.items():
25+
if k % 2 != 0:
26+
return -1
27+
to_swap += [j] * (abs(k) // 2)
28+
29+
to_swap.sort()
30+
res = 0
31+
for i in range(len(to_swap) // 2):
32+
res += min(to_swap[i], 2 * mn)
33+
34+
return res
35+
36+
37+
if __name__ == "__main__":
38+
# ---- Test Cases ----
39+
test_cases = [
40+
([4, 2, 2, 2], [1, 4, 1, 2]), # Expected: 1
41+
([1, 2, 3, 4], [2, 3, 4, 1]), # Expected: 0
42+
([1, 1, 1, 1], [1, 1, 1, 1]), # Expected: 0
43+
([1, 2, 2], [2, 1, 1]), # Expected: -1
44+
([5, 3, 3, 2], [2, 5, 5, 3]) # Expected: -1
45+
]
46+
47+
print("Running test cases...\n")
48+
for b1, b2 in test_cases:
49+
print(f"basket1 = {b1}, basket2 = {b2} → minCost = {min_cost(b1, b2)}")

0 commit comments

Comments
 (0)