Nếu bạn muốn đếm các mục nhập nhân, các giải pháp dựa trên SET sẽ thất bại; Bạn sẽ cần một cái gì đó giống như
from collections import Counter
def numDups[a, b]:
if len[a]>len[b]:
a,b = b,a
a_count = Counter[a]
b_count = Counter[b]
return sum[min[b_count[ak], av] for ak,av in a_count.iteritems[]]
sau đó
numDups[[1,1,2,3], [1,1,1,1,1]]
Trả về 2. Thời gian chạy trên thang đo này là O [N+M].
Ngoài ra, giải pháp ban đầu của bạn
for num in y:
if num in x:
count += 1
là sai - áp dụng cho [1,2,3,3] và [1,1,1,1,1,3], mã của bạn sẽ trả về 3 hoặc 6, cả hai đều không đúng [câu trả lời nên là 2].
Phương pháp số 3: Sử dụng chức năng giảm + đếm
Sự kết hợp của phương pháp trên có thể được sử dụng để giải quyết vấn đề này. Trong đó, chúng tôi đếm phần tử bằng cách sử dụng chức năng giảm và đếm. & NBSP; : test_list1 = [3, 5, 6, 7, 2, 3, 5], test_list2 = [5, 5, 3, 9, 8, 5] Output : 4 Explanation : 3 repeats 2 times, and 5 two times, totalling to 4. Input : test_list1 = [3, 5, 6], test_list2 = [5, 3, 9] Output : 2 Explanation : 3 repeats 1 time, and 5 one time, totalling to 2.
from
functools
import
reduce
Các
Python3
from
functools
import
reduce
Các
for num in y:
if num in x:
count += 1
5numDups[[1,1,2,3], [1,1,1,1,1]]
1 numDups[[1,1,2,3], [1,1,1,1,1]]
2numDups[[1,1,2,3], [1,1,1,1,1]]
5numDups[[1,1,2,3], [1,1,1,1,1]]
4numDups[[1,1,2,3], [1,1,1,1,1]]
5numDups[[1,1,2,3], [1,1,1,1,1]]
4numDups[[1,1,2,3], [1,1,1,1,1]]
3numDups[[1,1,2,3], [1,1,1,1,1]]
4The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 34
numDups[[1,1,2,3], [1,1,1,1,1]]
4The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 36
for num in y:
if num in x:
count += 1
4The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 38
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 30
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 31
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 32
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 33
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 38
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 36
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 31
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 32
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 30____11
reduce
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 34
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 35
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 31
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 37
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 38
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
from
0from
1The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 38
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
from
4 The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 31
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 32
from
7Đầu ra
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 3
Python3
Các
for num in y:
if num in x:
count += 1
5numDups[[1,1,2,3], [1,1,1,1,1]]
1 numDups[[1,1,2,3], [1,1,1,1,1]]
2numDups[[1,1,2,3], [1,1,1,1,1]]
5numDups[[1,1,2,3], [1,1,1,1,1]]
4numDups[[1,1,2,3], [1,1,1,1,1]]
5numDups[[1,1,2,3], [1,1,1,1,1]]
4numDups[[1,1,2,3], [1,1,1,1,1]]
3numDups[[1,1,2,3], [1,1,1,1,1]]
4The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 34
numDups[[1,1,2,3], [1,1,1,1,1]]
4The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 36
for num in y:
if num in x:
count += 1
4The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 38
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 30
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 31
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 32
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 33
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 38
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 36
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 31
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 32
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 30____11
reduce
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 34
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 35
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 31
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 37
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 38
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
from
0from
1The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 38
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
from
4 The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 31
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 32
from
7
Đầu ra
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 3
Các
for num in y:
if num in x:
count += 1
5numDups[[1,1,2,3], [1,1,1,1,1]]
1 numDups[[1,1,2,3], [1,1,1,1,1]]
2numDups[[1,1,2,3], [1,1,1,1,1]]
5numDups[[1,1,2,3], [1,1,1,1,1]]
4numDups[[1,1,2,3], [1,1,1,1,1]]
5numDups[[1,1,2,3], [1,1,1,1,1]]
4numDups[[1,1,2,3], [1,1,1,1,1]]
3numDups[[1,1,2,3], [1,1,1,1,1]]
4The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 34
numDups[[1,1,2,3], [1,1,1,1,1]]
4The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 36
for num in y:
if num in x:
count += 1
4Python3
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 30
numDups[[1,1,2,3], [1,1,1,1,1]]
1 numDups[[1,1,2,3], [1,1,1,1,1]]
10numDups[[1,1,2,3], [1,1,1,1,1]]
11numDups[[1,1,2,3], [1,1,1,1,1]]
12Phương pháp số 3: Sử dụng chức năng giảm + đếm
for num in y:
if num in x:
count += 1
5numDups[[1,1,2,3], [1,1,1,1,1]]
1 numDups[[1,1,2,3], [1,1,1,1,1]]
2numDups[[1,1,2,3], [1,1,1,1,1]]
5numDups[[1,1,2,3], [1,1,1,1,1]]
4numDups[[1,1,2,3], [1,1,1,1,1]]
5numDups[[1,1,2,3], [1,1,1,1,1]]
4numDups[[1,1,2,3], [1,1,1,1,1]]
3numDups[[1,1,2,3], [1,1,1,1,1]]
4The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 34
numDups[[1,1,2,3], [1,1,1,1,1]]
4The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 36
for num in y:
if num in x:
count += 1
4The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 38
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 30
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 31
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 32
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 33
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 38
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 36
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 31
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 32
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 30____11
reduce
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 34
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 35
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 31
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 37
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 38
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
from
0from
1The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 38
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 39
from
4 The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 31
The original list 1 : [3, 5, 6, 7, 2, 3] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 32
from
7Đầu ra
The original list 1 : [3, 5, 6, 7, 3, 2] The original list 2 : [5, 5, 3, 9, 8] All matching elements : 3