def fun(nums):
n = len(nums)
left_sum = [0] * n
right_sum = [0] * n
left_mean = [0] * n
right_mean = [0] * n
nums.sort() # 是否需要排序?
# print(nums)
cur_sum = 0
for i in range(n):
cur_sum += nums[i]
left_sum[i] = cur_sum
left_mean[i] = left_sum[i] / (i + 1)
cur_sum = 0
for j in range(n - 1, -1, -1):
cur_sum += nums[j]
right_sum[j] += cur_sum
right_mean[j] = right_sum[j] / (n - j)
# print('left_sum', left_sum)
# print('left_mean', left_mean)
# print('right_sum', right_sum)
# print('right_mean', right_mean)
idx = 0
gap = abs(left_mean[0] - right_mean[1]) # 至少含有两个数
for k in range(n - 1):
cur_gap = abs(left_mean[k] - right_mean[k + 1]) # 需要错开一个位置计算
# print(cur_gap)
if cur_gap < gap:
gap = cur_gap
idx = k
return idx, gap # idx是作为第一部分数组的最后一个值的【下标】
nums = [33, 30, 43, 4, 23, 67, 30, 39, 44]
fun(nums)
数组分成两部分的计算
最新推荐文章于 2023-02-26 18:03:56 发布