2574. 左右元素和的差值 - 力扣(LeetCode)
2574. 左右元素和的差值 - 给你一个下标从 0 开始的长度为 n 的整数数组 nums。 定义两个数组 leftSum 和 rightSum,其中: * leftSum[i] 是数组 nums 中下标 i 左侧元素之和。如果不存在对应的元素,leftSum[i] = 0 。 * rightSum[i] 是数组 nums 中下标 i 右侧元素之和。如果不存在对应的元素,rightSum[i] = 0 。 返回长度为 n 数组 answer,其中 answer[i] =...
昨天数位 DP 实在是不太会,就去随便挑了一道中等题做了。
今天这题就很常规了。
思路
其实就是在计算前缀和与后缀和的绝对差。不过额外空间可以只使用结果数组,先在结果数组中生成前缀,然后动态生成后缀并计算结果即可。
代码
class Solution {
public:
vector<int> leftRightDifference(vector<int>& nums) {
// 就是在考察前缀后缀,额外空间只需要结果数组
int n=nums.size();
vector<int> res(n,0);
// 先生成前缀
for(int i=1;i<n;i++){
res[i]=res[i-1]+nums[i-1];
}
// 再根据后缀得到结果
int rightSum=nums[n-1];
for(int i=n-2;i>=0;i--){
res[i]=abs(res[i]-rightSum);
rightSum+=nums[i];
}
return res;
}
};
1 个帖子 - 1 位参与者