第三题前缀和,不用动房差公式 def minvar(arr): x_sum,xx_sum=0,0 prefix_left = [0]*len(arr) prefix_right = [0]*len(arr) for i in range(len(arr)): x_sum+=arr[i] xx_sum+=(arr[i]**2) prefix_left[i] = xx_sum/(i+1.0)-(x_sum/(i+1.0))**2 x_sum,xx_sum=0,0 for i in range(len(arr)-1,-1,-1): x_sum+=arr[i] xx_sum+=(arr[i]**2) prefix_right[i] = xx_sum/(len(arr)-i)-(x_sum/(len(arr)-i))**2 idx,var = 0,float('inf') print(prefix_left) print(prefix_right) for i in range(len(arr)-1): if prefix_left[i] + prefix_right[i+1]<var: idx = i var = prefix_left[i] + prefix_right[i+1] return idx+1

相关推荐

牛客网
牛客企业服务