📅  最后修改于: 2023-12-03 15:10:05.004000             🧑  作者: Mango
给定一个整数数组 nums
,请编写一个函数,找出其中的所有元素,其左侧和右侧的素数个数相等。
nums
,以当前元素为分界点,分别统计其左侧和右侧的素数个数。def is_prime(num):
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
def find_balance_primes(nums):
result = []
for i in range(len(nums)):
left_primes = sum(map(is_prime, nums[:i]))
right_primes = sum(map(is_prime, nums[i+1:]))
if left_primes == right_primes:
result.append(nums[i])
return result
assert find_balance_primes([2, 3, 7, 8, 3, 2]) == [7, 3]
assert find_balance_primes([1, 2, 3, 4, 5, 6, 7, 8, 9]) == [2, 3, 5, 7]
assert find_balance_primes([1, 6, 9, 10, 3]) == [10]
该算法的时间复杂度为 $O(n^2)$,因为对于数组中的每个元素都需要进行一次遍历计算其左侧和右侧的素数个数。因此,对于大型数组,该算法可能会运行时间过长。