-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathe0575.py
59 lines (47 loc) · 1.45 KB
/
e0575.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# -*- coding: utf-8 -*-
"""Distribute Candies
Given an integer array with even length, where different numbers in this array
represent different kinds of candies. Each number means one candy of the
corresponding kind. You need to distribute these candies equally in number
to brother and sister. Return the maximum number of kinds of candies the sister
could gain.
Example 1:
Input: candies = [1,1,2,2,3,3]
Output: 3
Explanation:
There are three different kinds of candies (1, 2 and 3), and two candies for
each kind.
Optimal distribution: The sister has candies [1,2,3] and the brother has candies
[1,2,3], too.
The sister has three different kinds of candies.
Example 2:
Input: candies = [1,1,2,3]
Output: 2
Explanation: For example, the sister has candies [2,3] and the brother has
candies [1,1].
The sister has two different kinds of candies, the brother has only one kind of
candies.
Note:
The length of the given array is in range [2, 10,000], and will be even.
The number in given array is in range [-100,000, 100,000].
"""
from typing import Tuple
def solution(arr: Tuple[int]) -> int:
"""
number of candy: N
kinds of candy: M
if M >= N/2, return N/2
if M < N/2 return M
:param arr:
:return:
"""
n = len(arr)
m = len(set(arr))
return min(m, n // 2)
if __name__ == '__main__':
in1 = [1, 1, 2, 2, 3, 3]
in2 = [1, 1, 2, 3]
exp1 = 3
exp2 = 2
assert solution(in1) == exp1
assert solution(in2) == exp2