列表

详情


6369. 左右元素和的差值

给你一个下标从 0 开始的整数数组 nums ,请你找出一个下标从 0 开始的整数数组 answer ,其中:

其中:

返回数组 answer

 

示例 1:

输入:nums = [10,4,8,3]
输出:[15,1,11,22]
解释:数组 leftSum 为 [0,10,14,22] 且数组 rightSum 为 [15,11,3,0] 。
数组 answer 为 [|0 - 15|,|10 - 11|,|14 - 3|,|22 - 0|] = [15,1,11,22] 。

示例 2:

输入:nums = [1]
输出:[0]
解释:数组 leftSum 为 [0] 且数组 rightSum 为 [0] 。
数组 answer 为 [|0 - 0|] = [0] 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<int> leftRightDifference(vector<int>& nums) { } };

java 解法, 执行用时: 1 ms, 内存消耗: 41.9 MB, 提交时间: 2023-02-27 14:18:24

class Solution {
    public int[] leftRigthDifference(int[] nums) {
        int left = 0;
        int right = 0;
        int[] ans = new int[nums.length];
        

        for (int i = 0; i < nums.length; i++) {
            right += nums[i];
        }

 
        for (int i = 0; i < nums.length; i++) {
            right -= nums[i];
            ans[i] = Math.abs(right - left);
            left += nums[i];
        }

        return ans;
    }
}

python3 解法, 执行用时: 40 ms, 内存消耗: 15.1 MB, 提交时间: 2023-02-27 14:14:59

class Solution(object):
    def leftRigthDifference(self, nums):
        left, right, ans = 0, sum(nums), []
        for x in nums:
            right -= x
            ans.append(abs(left - right))
            left += x
        return ans

golang 解法, 执行用时: 0 ms, 内存消耗: 4.9 MB, 提交时间: 2023-02-27 14:13:57

func leftRigthDifference(nums []int) []int {
	n := len(nums)
	rightSum := make([]int, n)
	for i := n - 1; i > 0; i-- {
		rightSum[i-1] = rightSum[i] + nums[i]
	}
	
	ans := make([]int, n)
	leftSum := 0
	for i, x := range nums {
		ans[i] = abs(leftSum - rightSum[i])
		leftSum += x
	}
	return ans
}

func abs(x int) int { if x < 0 { return -x }; return x }

python3 解法, 执行用时: 36 ms, 内存消耗: 15.2 MB, 提交时间: 2023-02-27 14:13:41

'''
模拟,前缀和,后缀和
'''
class Solution:
    def leftRigthDifference(self, nums: List[int]) -> List[int]:
        n = len(nums)
        left_sum, right_sum = [0] * n, [0] * n
        for i in range(n - 1):
            left_sum[i + 1] = left_sum[i] + nums[i]
            right_sum[-2 - i] = right_sum[-1 - i] + nums[-1 - i]
        return [abs(x - y) for x, y in zip(left_sum, right_sum)]

上一题