• 2024-05-30前缀和数组
    //前缀和数组preSum[]:preSum[i]记录nums[0,i-1]区间的累加和classex_preSum{private:vector<int>preSum;public:ex_preSum(vector<int>nums){preSum.resize(nums.size()+1);//原数组下标[0,n-1]。preS
  • 2024-05-24P8765 [蓝桥杯 2021 国 AB] 翻转括号序列
    本文参考博客[蓝桥杯2021国AB]翻转括号序列(线段树上二分)一、问题简析线段树+二分初步分析令(的值为1,)的值为-1,则对于序列\(a_La_{L+1}a_{L+2}...a_R\),其为合法序列的条件为\[\begin{cases}\sum_{n=L}^R{a_n}=0\\\forall~k\in[L,R],\sum_{n=L}^k{a_n}\ge
  • 2024-04-01前缀和
    题目LeetCode力扣难度303.RangeSumQuery-Immutable303.区域和检索-数组不可变
  • 2024-03-27304. 二维区域和检索 - 矩阵不可变(中)
    目录题目题解:二维前缀和题目给定一个二维矩阵matrix,以下类型的多个请求:计算其子矩形范围内元素的总和,该子矩阵的左上角为(row1,col1),右下角为(row2,col2)。实现NumMatrix类:NumMatrix(int[][]matrix)给定整数矩阵matrix进行初始化intsumRegion(introw1,
  • 2024-03-25P2642 双子序列最大和
    原题链接审题1.连续子序列:子序列必须连续2.最小长度为13.子序列之间至少隔一个数题解令\(presum[i]\)代表i及其之前的最大前缀和则第一步更新令\(presum[i]\)为必须包括i的最大前缀和,第二步更新令其为i及其之前的最大前缀和。sufsum同理最后枚举断点求和code#inclu
  • 2024-03-07labuladong_一/二维数组前缀和
    一维数组前缀和核心思路是我们new一个新的数组 preSum 出来,preSum[i] 记录 nums[0..i-1] 的累加和。看这个 preSum 数组,如果我想求索引区间 [1,4] 内的所有元素之和,就可以通过 preSum[5]-preSum[1] 得出。一维数组前缀和 
  • 2024-01-28数组前缀和
    一维数组中的前缀和https://leetcode.com/problems/range-sum-query-immutable/description/区域和检索#include<stdio.h>#include<stdlib.h>//定义NumArray结构体typedefstruct{int*preSum;//前缀和数组}NumArray;//创建NumArray对象,并计算前缀和数组
  • 2024-01-181480.一维数组的动态和
    1.题目介绍给你一个数组nums。数组「动态和」的计算公式为:runningSum[i]=sum(nums[0]…nums[i])。请返回nums的动态和。示例1:输入:nums=[1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为[1,1+2,1+2+3,1+2+3+4]。示例2:输入:nums=[1,1,1,1,1]输出:[1,2,3,4,5]
  • 2024-01-18560.和为k的数组
    1.题目介绍给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的子数组的个数。子数组是数组中元素的连续非空序列。示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2提示:1<=nums.length<=2*104-1000<=nums[i]<=
  • 2024-01-14[刷题技巧] 前缀和相关知识点汇总
    一、前缀和的作用前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和。二、前缀和的思路将原始数组进行预处理,将来需要查询数据的时候,只需要查询预处理的前缀和数组的某些值即可。前缀和的求解是【动态规划】。三、前缀和的定义四、前缀和数组的构造//int[]nums
  • 2024-01-14[刷题班] LeetCode1480. 一维数组的动态和
    题目描述思路:前缀和前缀和数组(prefixSum)的构造方法一:classSolution{publicint[]runningSum(int[]nums){int[]preSum=newint[nums.length];preSum[0]=nums[0];for(inti=1;i<nums.length;i++){preSum[i]
  • 2024-01-12刷题笔记——队列(C++)
    1696.跳跃游戏VI-力扣(LeetCode)给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。一开始你在下标 0 处。每一步,你最多可以往前跳 k 步,但你不能跳出数组的边界。也就是说,你可以从下标 i 跳到 [i+1,min(n-1,i+k)] 包含 两个端点的任意位置。你的目标是
  • 2023-12-26二叉树路径总和系列问题
    二叉树路径总和系列问题作者:Grey原文地址:博客园:二叉树路径总和系列问题CSDN:二叉树路径总和系列问题LeetCode112.路径总和定义递归函数booleanprocess(TreeNodenode,intpreSum,inttarget)递归含义表示:从node节点一直到树的叶子节点,preSum表示node之前的节点
  • 2023-12-20560. 和为 K 的子数组
    给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。 示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2 提示:1<=nums.length<=2*104-1000<=nu
  • 2023-11-04【进阶算法】一维数组的前缀和
    前缀和是指数组某个索引之前的所有元素的和,是一种重要的预处理手段,使用前缀和可以快速求出数组某一个区间的和。 示例:数组arr=[8,1,3,-2,5,0,-3,6],输入m个询问,每个询问输入一对l,r。对于每个询问,要求输出原数组中从第l个数到第r个数的和。比如,第1次询问,输入[0,2],需要输出1
  • 2023-10-24C++算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例
    相关源码测试用例下载包括4个压缩包,初始代码,实现前缀和,实现前缀积,实现前缀异或。都是在前者的基础上修改的。原理长度为n的数组nums,共有n+1个以nums[0]开始的子数组。索引范围分别为[0,i),i取值区间[0,n]。preSum[i]记录子数组[0,i)的和。比如:nums={1,2,3,4},则preSum={0,1,3,6
  • 2023-07-24LeetCode 热题 100 之 560. 和为 K 的子数组.md
    题目给你一个整数数组nums和一个整数 k,请你统计并返回该数组中和为 k 的连续子数组的个数 。示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2提示:1<=nums.length<=2*10^4-1000<=nums[i]<=1000-10^7<=k<=10^7思路
  • 2023-07-12LeetCode —— 子串
    560. 和为K的子数组(哈希表)官方题解:https://leetcode.cn/problems/subarray-sum-equals-k/solution/he-wei-kde-zi-shu-zu-by-leetcode-solution/假设left到right下标的子数组和为knums[left...right]=kpreSum[right]-preSum[left]=kpreSum[left]=preSum[rig
  • 2023-06-08LeetCode----前缀和
    1算法原理适用场景:利用preSum数组,可以在O(1)的时间内快速求出nums任意区间[i,j]内的所有元素之和sum(i,j)=preSum(j+1)-preSum[i]算法模板classNumArray:def__init__(self,nums:List[int]):N=len(nums)self.preSum=[0]*(N+1)
  • 2023-06-05前缀和 & 技巧小记
    前缀和子数组的元素之和:一维前缀和子矩阵的元素之和:二维前缀和前缀和+哈希表:寻找和为target的子数组 子数组的元素之和:一维前缀和前缀和适用于快速、频繁地计算一个索引区间内的元素之和。intres=0;//存储区间[left,right]之和for(inti=left;i<=right;i++)
  • 2023-06-02560. 和为 K 的子数组
    思路难度中等1936给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。 示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2 提示:1<=nums.length<=2*104-1000<=nums[i]<=1
  • 2023-04-25区间和的个数
    给你一个整数数组nums以及两个整数lower和upper求数组中,值位于范围[lower,upper](包含lower和upper)之内的区间和的个数一.前缀和+双重循环(超时)classSolution{public:intcountRangeSum(vector<int>&nums,intlower,intupper){intn=nums.s
  • 2023-04-16【LBLD】带权重的随机选择算法
    带权重的随机选择算法528.按权重随机选择不使用二分法:classSolution{private:vector<int>preSum;intN=0;public:Solution(vector<int>&w){srand(time(0));preSum.push_back(0);for(inti=1;i<=w.size();i++){
  • 2023-04-09【LeeCode】523.连续的子数组和
    【题目描述】给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小 至少为2 ,且子数组元素总和为 k 的倍数。如果存在,返回 true ;否则,返回 false 。如果存在一个整数 n ,令整数 x 符合 x=n*k ,则称 x
  • 2023-04-07蓝桥-13届-青蛙过河
    看完没什么思路就类似于看完一个自然语言描述的问题后,没法把它转换编程模型题目的意思是y至少要多大,才能足够青蛙跳2x次因为跳跃过程是可逆的,于是能否往返跳2x次等价于同向跳2x次由于当y=n时,青蛙不需要踩任何石头直接跳过去,于是y一定是小于等于n的一个数照这个数我们可以使用