题目链接: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)\),除返回数组空间外无额外空间使用。