zoukankan      html  css  js  c++  java
  • 基础算法 --- 前缀和与差分

    前缀和

    一个数列A,它的前缀和数列S是能够通过数学方式推断出来的:

    部分和

    数列A中某个下标区间内和数的和,即:

    S[i, j]=S[j] - S[i - 1]

    前缀和与部分和应用场景

    给定m个区间,求每个区间内数的和;

    暴力解法:m次循环,循环内部再进行区间循环,这种解法在小量数据场景无问题,如果数值大,会造成超时。

    前缀和解法:先计算前缀和,然后循环m次,求每个区间部分和

    差分

    一个数列A:1、2、3、4、5,它的差分数列为B:1、1、1、1、1,那么有如下特性:

    1、数列B的前缀和S[i]=A[i]

    2、数列A的第i项加k相当于数列B的第i项加k,第i+1项减k

    3、数列A的第i到j项加k,相当于数列B的第i项加k,第j+1项减k

    力扣对应习题

    https://leetcode-cn.com/problems/corporate-flight-bookings/

    https://leetcode-cn.com/problems/subarray-sum-equals-k/

  • 相关阅读:
    区间DP中的环形DP
    hdu 5251 包围点集最小矩形 ***
    hdu 4858 水题
    hdu 3530 单调队列 **
    hdu 3338 最大流 ****
    hdu 2732 最大流 **
    hdu 5233 离散化 **
    hdu 3555 数位dp *
    zoj 3469 区间dp **
    2015 安徽程序设计省赛总结
  • 原文地址:https://www.cnblogs.com/sniffs/p/12121916.html
Copyright © 2011-2022 走看看