寻找数组的中心下标 ---- 前缀和

题目接

题目:

分析:

  • 这道题是求某个区间内数组的和, 所以可以用前缀和算法
  • 假设i位置是中心位置, 我们要知道[0,i - 1]的和 和 [i + 1,n - 1]的和 看是否相等
  • 先求[0,i - 1]的和 用一个前缀数组f
    此时f[i] 表示: 前i - 1个数的和, 那么f[i - 1] 就表示前i - 2的和, 所以让f[0] = 0, i从1开始, 从前往后遍历
    f[i] = f[i - 1] + nums[i - 1]
  • 求[i + 1,n - 1]的和 用一个后缀数组g
    此时g[i] 表示: 后i + 1个数的和, 那么g[i + 1] 就表示后i + 2的和, 所以让g[n - 1] = 0, i从n-2开始, 从后往前遍历
    g[i] = g[i + 1] + nums[i + 1]
  • 从头遍历数组, 判断f[i] 是否等于 g[i]

代码:

java 复制代码
class Solution {
    public int pivotIndex(int[] nums) {
        int n = nums.length;
        int[] f = new int[n];
        int[] g = new int[n];
        for (int j = 1; j < n; j++) {
            f[j] = f[j - 1] + nums[j -1];
        }
        for (int j = n - 2; j >= 0; j--) {
            g[j] = g[j + 1] + nums[j + 1];
        }
        for (int i = 0; i < n; i++) {
            if(f[i] == g[i]){
                return i;
            }
        }
        return -1;
    }
}
相关推荐
CoovallyAIHub2 小时前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉
CoovallyAIHub2 小时前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉
聚客AI19 小时前
🙋‍♀️Transformer训练与推理全流程:从输入处理到输出生成
人工智能·算法·llm
大怪v1 天前
前端:人工智能?我也会啊!来个花活,😎😎😎“自动驾驶”整起!
前端·javascript·算法
惯导马工1 天前
【论文导读】ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and
深度学习·算法
骑自行车的码农1 天前
【React用到的一些算法】游标和栈
算法·react.js
博笙困了1 天前
AcWing学习——双指针算法
c++·算法
moonlifesudo1 天前
322:零钱兑换(三种方法)
算法
NAGNIP2 天前
大模型框架性能优化策略:延迟、吞吐量与成本权衡
算法
美团技术团队2 天前
LongCat-Flash:如何使用 SGLang 部署美团 Agentic 模型
人工智能·算法