class Solution {
public:
vector<int> leftRightDifference(vector<int>& nums) {
}
};
6369. 左右元素和的差值
给你一个下标从 0 开始的整数数组 nums
,请你找出一个下标从 0 开始的整数数组 answer
,其中:
answer.length == nums.length
answer[i] = |leftSum[i] - rightSum[i]|
其中:
leftSum[i]
是数组 nums
中下标 i
左侧元素之和。如果不存在对应的元素,leftSum[i] = 0
。rightSum[i]
是数组 nums
中下标 i
右侧元素之和。如果不存在对应的元素,rightSum[i] = 0
。返回数组 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] 。
提示:
1 <= nums.length <= 1000
1 <= nums[i] <= 105
原站题解
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)]