【蓝桥杯每日一题】------前缀和

题目

一个数组切两刀, 有三段
每段总和相等

解析

先确定第三段起点。
再通过枚举第三段起点之前 可切一刀的次数。

pre[0] = a[0]
pre[i] = pre[i - 1] + a[i]

代码

# 索引从1开始到n结束
    for i in range(1, n): #range的末尾不包括末尾本身
        # 开始判断能否在中间,必然不可能从num[0]开始
        # 如果presun[i] = 第二份的开始 |--a--b--c 
        # 即可初步判断左侧和等于=中间和 
        if presum[i] == b:
            count += 1
    res = 0
        # 但也有中间就是右侧和的可能 故开始第二次判断
        # 从右往左判断 
    for i in range(1, n - 1):
        if presum[i] == b:
            # 如果由右往左出现情况,即可判断非三等分集和内和相等,故count - 1
            count -= 1
            # 左侧之前的累加和 = 中间和 既可以三等分,故res +=count 返回结果
        if presum[i] == a:
            res += count
    print(res)


每日一题结束。
今天这道题我多做几遍,明天再抽出点时间做一遍,不信我不会。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值