1. 题目
2. 思路
这道题主要是搞懂如何计算leftSum和rightSum就可以了,得到这两个数组以后answer的答案就显而易见了。我是将所有的情况分为两种,一种是下标为0的时候,另外一种是其他情况。i为0的时候,leftSum[i]为0,rightSum[i]为总和减去nums[0],其他情况,leftSum[i]为leftSum[i - 1] + nums[i - 1],rightSum[i] 为 sum - nums[i] - leftSum[i]。
3. 代码实现
/**
* @param {number[]} nums
* @return {number[]}
*/
var leftRigthDifference = function(nums) {
let leftSum = [], rightSum = [], sum = 0, answer = []
const n = nums.length
nums.forEach(item => sum += item)
for (let i = 0; i < n; i++) {
if (i === 0) {
leftSum[i] = 0
rightSum[i] = sum - nums[i]
answer[i] = Math.abs(leftSum[i] - rightSum[i])
continue
}
leftSum[i] = leftSum[i - 1] + nums[i - 1]
rightSum[i] = sum - nums[i] - leftSum[i]
answer[i] = Math.abs(leftSum[i] - rightSum[i])
}
// console.log(leftSum, rightSum);
return answer
};
- 总感觉我的代码写的比较冗余,求指教~