1.トピック
2.アイデア
この質問は、主に leftSum と rightSum の計算方法を理解するためのもので、これら 2 つの配列を取得すると、答えは自明になります。すべての場合を 2 つのタイプに分けます。1 つは添え字が 0 の場合で、もう 1 つはそれ以外の場合です。i が 0 の場合、leftSum[i] は 0、rightSum[i] は合計から nums[0] を引いたもの、それ以外の場合、leftSum[i] は leftSum[i - 1] + nums[i - 1]、rightSum[ i] は合計 - 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
};
- 私はいつも私のコードが冗長だと感じています。アドバイスしてください〜