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

目录

    • [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.

相关推荐
2401_85791829几秒前
实时数据处理中的C++应用
开发语言·c++·算法
2401_884563241 分钟前
C++中的装饰器模式实战
开发语言·c++·算法
MicroTech20256 分钟前
微算法科技(NASDAQ :MLGO)抗量子区块链技术:筑牢量子时代的数字安全防线
科技·算法·区块链
Ivanqhz8 分钟前
图着色寄存器分配算法(Graph Coloring)
开发语言·javascript·python·算法·蓝桥杯·rust
Elsa️74610 分钟前
洛谷p5718 复习下快速排序和堆排序
数据结构·算法·排序算法
Frostnova丶12 分钟前
LeetCode 3567.子矩阵的最小绝对差
算法·leetcode·矩阵
夏日听雨眠14 分钟前
文件学习9
数据结构·学习·算法
华农DrLai14 分钟前
什么是自动Prompt优化?为什么需要算法来寻找最佳提示词?
人工智能·算法·llm·nlp·prompt·llama
黎阳之光15 分钟前
十五五智赋新程 黎阳之光以AI硬核技术筑造产业数智底座
大数据·人工智能·算法·安全·数字孪生
2401_8914821716 分钟前
C++中的原型模式
开发语言·c++·算法