当前位置: 首页 > news >正文

算法之 前缀和

文章目录

  • 前缀和基础
    • 3427.变长子数组求和
  • 前缀和与哈希表
    • 1524.和为奇数的子数组数目
  • 距离和

  • 前缀和,就是定义pre[i] 为nums的前i个元素的和值,一般pre数组长度会=n+1,这样在计算的nums数组中下标i到j的情况的时候,直接就可以使用pre[j+1]-pre[i],如果找的是第i个到第j个,那么就是pre[j]-pre[i-1]
  • 所以得根据题目求解的是下标还是第几个确定具体的计算公式
  • 前缀和与哈希表

前缀和基础

3427.变长子数组求和

3427.变长子数组求和

在这里插入图片描述

  • 求解的是下标问题,所以是pre[j+1] - pre[i]类型
class Solution:
    def subarraySum(self, nums: List[int]) -> int:
        # 前缀和的问题
        n = len(nums)
        pre = [0]*(n+1)
        for i in range(n):
            pre[i+1] = pre[i] + nums[i]
        ans = 0
        for i in range(n):
            start = max(0,i-nums[i])
            ans += pre[i+1] - pre[start] 
        return ans

前缀和与哈希表

1524.和为奇数的子数组数目

1524.和为奇数的子数组数目

在这里插入图片描述

  • 使用哈希表+前缀和,要注意这个前缀和的第一个也要加入哈希表
class Solution:
    def numOfSubarrays(self, arr: List[int]) -> int:
        # 直接用哈希表存储
        mod = 10**9 + 7
        store = [0,0]
        n = len(arr)
        # 使用前缀和
        pre = [0]*(n+1)
        for i in range(n):
            pre[i+1] = pre[i] + arr[i]
        ans = 0
        for i in range(n+1):
            if pre[i] % 2==0:
                ans = ans + store[1]
                store[0] = store[0] + 1
            else:
                ans = ans + store[0]
                store[1] = store[1] + 1
        return ans % mod

距离和

http://www.dtcms.com/a/53660.html

相关文章:

  • 力扣132. 分割回文串 II
  • 传统工厂转型实录:1套WMS系统如何砍掉40%仓储成本
  • 信奥赛CSP-J复赛集训(DP专题)(16):P1203 [USACO1.1] 坏掉的项链 Broken Necklace
  • 【Qt QML】Loader动态加载组件
  • 【SegRNN 源码理解】图示理解 forward的过程
  • Kanna 与 Swift:结合使用提升网络请求效率
  • vue3,Element Plus中隐藏树el-tree滚动条
  • AIP-160 过滤
  • 采用OllamaSharp实现.NET快速对接deepseek实现聊天、模型管理、流式响应等功能
  • 统计作业提交情况python脚本
  • css错峰布局/瀑布流样式(类似于快手样式)
  • JVM参数调整
  • SAP的错误:General error 339 invalid number
  • 文献学习——考虑混合储能系统选择的基于改进蜂群算法的热电联产微网多目标经济优化调度
  • 攻防世界WEB(新手模式)19-file_include
  • Hadoop、Hive、Spark的关系
  • 盛铂科技 SLMF315频率综合器200MHz至15GHz 国产频综模块
  • 2024华为OD机试真题-磁盘容量排序算法(C++)-E卷B卷-100分
  • linux 使用阿里云盘 阿里网盘
  • 我的两个医学数据分析技术思路
  • UI自动化:利用百度ocr识别解决图形验证码登录问题
  • 实验一:在Windows 10/11下配置和管理TCP/IP
  • 【0012】Python函数详解
  • 深入理解CAS与乐观锁:Java高并发编程实战指南
  • 2021年高教社杯全国大学生数学建模A题——基于几何模型的“FAST”主动反射面的形状调节
  • ORB-SLAM2源码学习(六):相机跟踪(局部地图跟踪和关键帧创建)
  • 快捷键输出 打开 特定文件夹+资源管理器
  • AI-Ollama使用llama模型vue2中流式响应,模仿AI提问逐字渲染,呈现打印机效果
  • C++ 重载运算符
  • 工程化与框架系列(21)--前端性能优化