题解 | #获得最多的奖金#
获得最多的奖金
https://www.nowcoder.com/practice/247f7bd088764aefa7474cff27489095
利用双指针,可以看作是从两边分别求前缀和和后缀和,如果值相等就赋给结果res,如果左边大,就让右指针前进一步,同理,又变大,就让左指针前进一步。由于中间必须留至少一个红包,所以结束条件就是left + 1 <= right
while True: try: n = int(input()) nums = list(map(int, input().split())) left, right = 0, n - 1 res = 0 tmp_left, tmp_right = nums[0], nums[n - 1] while left + 1 <= right: if tmp_left == tmp_right: res = tmp_left left += 1 right -= 1 tmp_left += nums[left] tmp_right += nums[right] elif tmp_left > tmp_right: right -= 1 tmp_right += nums[right] else: left += 1 tmp_left += nums[left] print(res) except: break