首页 > 其他分享 >前缀和数组

前缀和数组

时间:2024-05-30 20:23:18浏览次数:22  
标签:前缀 nums vector ex 数组 preSum

// 前缀和数组preSum[]:preSum[i]记录nums[0,i-1]区间的累加和
class ex_preSum{
    private:
        vector<int> preSum;
    public:
        ex_preSum(vector<int> nums){
            preSum.resize(nums.size()+1);
            
            // 原数组下标[0,n-1]。preSum数组下标[0,n],其中preSum[0]=0,从preSum[1]开始。

            // preSum[i] = preSum[i-1]+nums[i-1];
            preSum[0] = 0;
            for(int i=1;i<preSum.size();i++){
                // nums[i-1]的原因:因为此处这个i是preSum的下标,而preSum的下标=nums的位序,要取nums第i个元素值时就要通过nums[i-1]取
                preSum[i] = preSum[i-1]+nums[i-1];
            }
        }
        int deal(int startIdx,int endIdx){
            int t = preSum[endIdx+1] - preSum[startIdx];
            return t; 
        }
        bool test_deal(){
            vector<int> nums{0,1,2,3,4,5};
            return ex_preSum(nums).deal(3,5) == 12;
        }
};

 

标签:前缀,nums,vector,ex,数组,preSum
From: https://www.cnblogs.com/jinziguang/p/18223147

相关文章

  • 代码随想录算法训练营第四十四天|01 背包、动态规划:01背包理论基础(滚动数组)、416. 分
    01背包文档讲解:代码随想录题目链接:46.携带研究材料(第六期模拟笔试)有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 暴力解法:每个物品都有放与不放两种状态......
  • Leecode热题100--215:数组中的第k个最大值
    题目:给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。时间复杂度为O(n)的算法解法一:利用STL特性解题:#include<iostream>#include<vector>#include<algorithm>usingnamespac......
  • Leecode热题100---二分查找--4:寻找两个正序数组的中位数
    题目:给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。解法1、暴力解法(归并)思路:合并nums1,nums2为第三个数组排序第三个数组按下标,找出中位数classSolution{public: doublefindMedianSortedArrays(vec......
  • python-合并排列数组 I
    问题描述:合并两个按升序排列的整数数组a和b,形成一个新数组,新数组也要按升序排列。问题示例:输入A=[1],B=[1],输出[1,1],返回合并后的数组。输入A=[1,2,3,4],B=[2,4,5,6],输出[1,2,2,3,4,4,5,6],返回合并所有元素后的数组。完整代码如下:a=list(map(int,input().split()))b=li......
  • java中String、List、数组之间的转换方式
    在Java中,String、List和数组(如String[])之间的转换是常见的操作。下面是如何在它们之间进行转换的示例。1.String转List通常,你不会直接将一个完整的String转换为List,但你可以将包含多个元素的字符串(如由逗号分隔的字符串)分割成多个部分,并将这些部分添加到List中。Str......
  • 数组算法-差分数组
    //差分数组使用背景:区间元素同步增减//差分数组:用来表示原始数组中相邻元素的差值,表示原数组的变化。classex_diff{private:vector<int>diff;public:ex_diff(vector<int>nums){/**求diff[]*diff[i]=nums[i],i......
  • 4. 寻找两个正序数组的中位数
    给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(m+n))。示例1:输入:nums1=[1,3],nums2=[2]输出:2.00000解释:合并数组=[1,2,3],中位数2示例2:输入:nums1=[1,2],nums2=......
  • 2024-05-29:用go语言,给定一个只包含正整数的数组 nums,任务是通过多次操作最小化数组的
    2024-05-29:用go语言,给定一个只包含正整数的数组nums,任务是通过多次操作最小化数组的长度。每次操作可以从数组中选择两个不同的下标i和j,使得nums[i]和nums[j]均为正整数。然后,将nums[i]除以nums[j]的余数插入数组末尾,同时删除原始的两个元素。最终要求计算进行操作......
  • 高维前缀和
    给定\(n,q\)和\(f(0),f(1),\dots,f(2^n-1)\)。\(q\)次询问,给定\(S\),求:\[\sum_{S'\subseteqS}f(S')\]\(n\le20\),\(q\le10^6\)。令\(S_i\)表示\(S\)的第\(i\)个二进制位。可以发现若\(S'\subseteqS\),那么对于所有\(i\)都有......
  • 031 指针学习—引用数组
    目录1数组元素的指针(1)定义(2)举例(3)注意事项2指针的算术运算(1)前提(2)运算规则(3)举例[1]p+i[2]p-i[3]++p与p++[4]--p与p--[5]p1-p2(4)注意事项3通过指针引用数组元素(1)引用数组元素方法(2)举例例1:输出a[10]数组中的全部元素例2:通过指针变量输出整型数组a的10个......