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

题目接

题目:

分析:

  • 这道题是求某个区间内数组的和, 所以可以用前缀和算法
  • 假设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;
    }
}
相关推荐
budingxiaomoli2 小时前
算法--滑动窗口(二)
算法
ID_180079054732 小时前
淘宝实时拍立淘按图搜索数据|商品详情|数据分析提取教程
算法·数据分析·图搜索算法
l1t2 小时前
Lua与LuaJIT的安装与使用
算法·junit·单元测试·lua·luajit
极客智造2 小时前
线性数据结构深度解析:数组、链表、栈与队列的实现与应用
数据结构·链表
Emilia486.3 小时前
【Leetcode&nowcode】代码强化练习(二叉树)
算法·leetcode·职场和发展
墨染点香3 小时前
LeetCode 刷题【135. 分发糖果】
算法·leetcode·职场和发展
Zhu_S W3 小时前
Redis跳表:高效有序数据结构的深度剖析
数据结构·数据库·redis
秋风战士4 小时前
通信算法之336 :3GPPMixed Mode Turbo Decoder
算法·matlab·fpga开发·信息与通信·基带工程
是那盏灯塔4 小时前
【算法】——动态规划之01背包问题
数据结构·c++·算法·动态规划
im_AMBER4 小时前
Leetcode 41
笔记·学习·算法·leetcode