算法学习--前缀和与差分

简介: 算法学习--前缀和与差分


一 前缀和

2615. 等值距离和 - 力扣(LeetCode)


在这个题目当中, 在考虑到使用一个 unordered_map<int, vector<int>> 储存相同数字的下标之后, 问题就变成了: 给定一个有序数组(这道题目当中存入 vector 的是下标, 在插入的时候自然就是有序的, 无需排序), 求这个数组中的一个数与其他所有数的差的绝对值之和, 这一点可以使用前缀和来解决, 用 s[i] 来表示数组 a 中的前 i 个数之和

前缀和中 s[] 的下标要从 1 开始, 如果 a[] 的下标也是从 1 开始的话, 就会配合默契, 但是如果说 a[] 的下标为 0 开始, 那么就用循环 i 依然从 1 开始, 但是用 a[i-1]


class Solution {
public:
    typedef long long LL;
    vector<long long> distance(vector<int>& nums) {
        unordered_map<int, vector<int>> mp;
        int n=nums.size();
        for(int i=0;i<n;i++){
            mp[nums[i]].push_back(i);
        }
        vector<LL> arr(n);
        // 写成匿名函数可以更方便的使用 distance 中的局部变量
        auto get_one=[&](vector<int>&  vec){
            int len_vec=vec.size();
            vector<LL> s(len_vec+1);
            s[0]=0;
            // a 的下标是从 0 开始的
            for(int i=0;i<len_vec;i++){
                s[i+1]=s[i]+vec[i];
            }
            // vec 的下标是从 0 开始的, 但是循环的时候 i 依然从 1 开始, 只是使用 vec[i-1]
            for(int i=1;i<=len_vec;i++){
                LL l=1LL*i*vec[i-1]-s[i];
                LL r=(s[len_vec]-s[i])-1LL*vec[i-1]*(len_vec-i);
                arr[vec[i-1]]=l+r;
            }
        };
        for(auto it:mp){
            get_one(it.second);
        }
        return arr;
    }
};


差分

相关文章
|
2天前
|
机器学习/深度学习 算法
应用规则学习算法识别有毒的蘑菇
应用规则学习算法识别有毒的蘑菇
|
13天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】关联规则学习:Apriori算法详解
【4月更文挑战第30天】Apriori算法是一种用于关联规则学习的经典算法,尤其适用于购物篮分析,以发现商品间的购买关联。该算法基于支持度和置信度指标,通过迭代生成频繁项集并提取满足阈值的规则。Python中可借助mlxtend库实现Apriori,例如处理购物篮数据,设置支持度和置信度阈值,找出相关规则。
|
13天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。
|
26天前
|
机器学习/深度学习 算法 前端开发
Scikit-learn进阶:探索集成学习算法
【4月更文挑战第17天】本文介绍了Scikit-learn中的集成学习算法,包括Bagging(如RandomForest)、Boosting(AdaBoost、GradientBoosting)和Stacking。通过结合多个学习器,集成学习能提高模型性能,减少偏差和方差。文中展示了如何使用Scikit-learn实现这些算法,并提供示例代码,帮助读者理解和应用集成学习提升模型预测准确性。
|
26天前
|
机器学习/深度学习 算法 Python
使用Python实现集成学习算法:Bagging与Boosting
使用Python实现集成学习算法:Bagging与Boosting
22 0
|
27天前
|
算法 安全 数据可视化
python关联规则学习:FP-Growth算法对药品进行“菜篮子”分析
python关联规则学习:FP-Growth算法对药品进行“菜篮子”分析
|
1月前
|
机器学习/深度学习 算法
【优选算法专栏】专题四:前缀和(二)
【优选算法专栏】专题四:前缀和(二)
22 1
|
1月前
|
算法
【算法学习--字符串】(不含KMP算法)
【算法学习--字符串】(不含KMP算法)
|
1月前
|
人工智能 算法
基础算法--前缀和与差分
基础算法--前缀和与差分
|
2月前
|
机器学习/深度学习 算法 数据挖掘
什么是集成学习算法
什么是集成学习算法
36 0