[算法--前缀和] 寻找数组的中心下标

目录

    • [1. 前缀和思想是利用前面的计算减少后面不必要的计算.](#1. 前缀和思想是利用前面的计算减少后面不必要的计算.)

好的, 我们来分享一道关于前缀和算法的简单练习题 -> 寻找数组的中心下标

这道题很显然比较直接的方式是去用枚举法挨个试, 但是这个过程中会有大量重复计算, 会自然的想到前缀和算法.

1. 前缀和思想是利用前面的计算减少后面不必要的计算.

  这个题目的思路非常简单和清晰, 感觉是属于十分简单的那一种题目了, 在思路和编码上都没有什么需要注意的地方. 下面简单说一下思路和给一个参考代码吧:

  我们从中心下标的定义可以知道, 出中心下标的元素之外, 该元素的左边的 **前缀和** 等于该元素右边的 **后缀和** . 因此, 我们可以预先处理两个数组, 一个表示 **前缀和** , 另一个表示 **后缀和** .

然后, 我们可以用一个for循环枚举可能出现的中心下表, 判断每一个位置的前缀和以及后缀和, 如果二者相等, 就返回当前下标.

我们可以用下面图片来解释一下:

参考代码是:

cpp 复制代码
class Solution {
    public:
        int pivotIndex(vector<int>& nums) {
            int n = nums.size(); vector<int> v(n+1, 0);
            
            // 1. 制造前缀和数组
            for(int i = 0; i < n; i++) v[i+1] = v[i] + nums[i];
            
            // 2. 挨个测试
            for(int i = 0; i < n; i++)
                if(v[i] == v[n] - v[i+1]) return i;

            return -1;
        }
    };

⇒ 一键返回: 前缀和专题目录


EOF.

相关推荐
郝学胜_神的一滴25 分钟前
干货版《算法导论》17:双数极值配对与卡牌手牌编码最优解
数据结构·算法
nike0good1 小时前
Codeforces Round 1101 (Div. 2) 题解
算法
中年阿甘1 小时前
解析式布局-二次线长布局
线性代数·算法·矩阵
程序喵大人1 小时前
【C++进阶】STL算法与函数对象 -【C++进阶】STL算法与函数对象
开发语言·c++·算法
鹿角片ljp2 小时前
LeetCode 53. 最大子数组和
算法·leetcode·职场和发展
江屿风2 小时前
【科普】【差集&交集概念落地云相册】流食般投喂
开发语言·c++·笔记·算法·云相册
数模竞赛Paid answer2 小时前
2023年五一杯数学建模A题无人机定点投放问题求解全过程完整文档及程序
算法·数学建模·无人机·五一杯
科学实验家3 小时前
dp子序列问题,好难呀
算法
wabs66611 小时前
关于图论【卡码网117.软件构建的思考】
数据结构·算法·软件构建·图论·卡码网
mifengxing12 小时前
LeetCode 41.缺失的第一个正数|Hard题O(n)+O(1)最优解法深度解析
java·算法·leetcode·排序算法