2574. 左右元素和的差值

发布时间 2023-04-08 18:21:17作者: lxy_cn

题目链接:2574. 左右元素和的差值

方法:前缀和 + 后缀和

解题思路

第一遍算出 \(nums\) 数组前缀和,第二遍计算 \(answer\) 数组。

代码

class Solution {
public:
    vector<int> leftRigthDifference(vector<int>& nums) {
        int n = nums.size();
        vector<int> answer(n);
        for (int i = 1; i < n; i ++ ) nums[i] += nums[i - 1]; // 前缀和
        for (int i = 0; i < n; i ++ ) {
            if (i == 0) answer[0] = nums[n - 1] - nums[0];
            else answer[i] = abs(nums[i - 1] - nums[n - 1] + nums[i]); // abs(nums[i - 1] - (nums[n - 1] - nums[i]))
        }
        return answer;
    }
};

复杂度分析

时间复杂度:\(O(n)\)
空间复杂度:\(O(1)\),除返回数组空间外无额外空间使用。