Python实现【找出两个整数数组中同时出现的整数】
from collections import defaultdict
import sys
def solve():
# 读取输入
arr1 = list(map(int, sys.stdin.readline().strip().split(',')))
arr2 = list(map(int, sys.stdin.readline().strip().split(',')))
# 统计频率
freq1 = defaultdict(int)
for num in arr1:
freq1[num] += 1
freq2 = defaultdict(int)
for num in arr2:
freq2[num] += 1
# 找出共同整数
common_nums = set(freq1.keys()) & set(freq2.keys())
if not common_nums:
print("NULL")
return
# 计算共同出现次数并分类
count_to_nums = defaultdict(list)
for num in common_nums:
count = min(freq1[num], freq2[num])
count_to_nums[count].append(num)
# 按共同出现次数排序
sorted_counts = sorted(count_to_nums.keys())
# 生成输出
for count in sorted_counts:
nums_sorted = sorted(count_to_nums[count])
print(f"{count}:{','.join(map(str, nums_sorted))}")
solve()
解决步骤
1、读取输入:从标准输入读取两行,分别代表两个数组。
2、解析数组:将每行字符串按逗号分割,转换为整数列表。
3、统计频率:分别统计两个数组中每个整数的出现频率(可以使用字典或哈希表)。
4、找出共同整数:遍历其中一个数组的频率字典,检查整数是否在另一个数组的频率字典中。
5、计算共同出现次数:对于每个共同整数,取两个数组中该整数出现次数的最小值。
6、分类和排序:
- 创建一个字典,键是共同出现次数,值是该次数下的整数列表。
- 将共同整数按照共同出现次数分类。
- 对字典的键(共同出现次数)进行排序。
- 对每个共同出现次数下的整数列表进行升序排序。
7、生成输出:
- 如果没有共同整数,输出“NULL”。
- 否则,按照“出现次数:整数列表”的格式输出,整数列表以逗号分隔。