平衡点问题
假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点
比如一个列表 numbers = [1,3,5,7,8,25,4,20],25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;
要求:返回任何一个平衡点。
解题思路
平衡点两边的数求和相等,也就是sum(lsit)减去这个数之后再除以2等于这个数某一边的数求和,可以用一个变量来累加这个数左边的那一部分序列。
Python代码:
def Find_Blance(alist):
sumlist = sum(alist)
balance = 0
for num in numbers:
if balance < (sumlist - num) / 2:
balance += num
else:
break
if balance == (sumlist - num) / 2:
print("平衡点是:{0}".format(num))
else:
print("平衡点不存在!")
if __name__ == '__main__':
numbers = [1, 3, 5, 7, 8, 25, 4, 20]
Find_Blance(numbers)
测试结果:
平衡点是:25
再换一组数据:
numbers = [2,1,8,4,10,30,55,25,25,5]
平衡点是:55
参考博客: https://www.cnblogs.com/Python666/articles/7454877.html