📅  最后修改于: 2023-12-03 15:22:22.496000             🧑  作者: Mango
给定一个整数数组nums,返回一个新数组counts,其中 counts[i] 表示 nums 中等于 i 的元素的频率。
这个问题可以使用分而治之的方法进行解决。我们可以将数组分成几个部分,计算每个部分的频率,然后将它们合并在一起。
具体地,我们可以使用递归的方法来实现这个思路,直到数组中只有一个元素时,返回该元素的频率。然后将左右两半的频率合并计算,得到整个数组的频率。
以下是一个Python实现的代码示例:
def find_frequency(nums: List[int]) -> List[int]:
n = len(nums)
if n == 1:
return [1]
left_counts = find_frequency(nums[:n//2])
right_counts = find_frequency(nums[n//2:])
counts = [0] * n
for i in range(n//2):
counts[i] = left_counts[i]
counts[n-1-i] = right_counts[i]
if n % 2 == 1:
counts[n//2] = right_counts[n//2]
return [counts[i] + counts[i+1] for i in range(0, n, 2)]