Open carloscn opened 1 year ago
int32_t left_right_difference(int32_t *nums, size_t nums_size)
{
int32_t ret = 0;
int32_t *left_nums = NULL, *right_nums = NULL;
UTILS_CHECK_PTR(nums);
UTILS_CHECK_LEN(nums_size);
left_nums = (int32_t *)calloc(nums_size, sizeof(int32_t));
UTILS_CHECK_PTR(left_nums);
right_nums = (int32_t *)calloc(nums_size, sizeof(int32_t));
UTILS_CHECK_PTR(right_nums);
for (size_t i = 0; i < nums_size; i ++) {
int32_t e = 0;
for (size_t j = 0; j < i; j ++) {
e += nums[j];
}
left_nums[i] = e;
e = 0;
for (size_t j = i + 1; j < nums_size; j ++) {
e += nums[j];
}
right_nums[i] = e;
}
for (size_t i = 0; i < nums_size; i ++) {
nums[i] = utils_int32_abs(left_nums[i] - right_nums[i]);
}
finish:
UTILS_SAFE_FREE(left_nums);
UTILS_SAFE_FREE(right_nums);
return ret;
}
Description
Given a 0-indexed integer array nums, find a 0-indexed integer array answer where:
answer.length == nums.length. answer[i] = |leftSum[i] - rightSum[i]|. Where:
leftSum[i] is the sum of elements to the left of the index i in the array nums. If there is no such element, leftSum[i] = 0. rightSum[i] is the sum of elements to the right of the index i in the array nums. If there is no such element, rightSum[i] = 0. Return the array answer.
Example 1:
Input: nums = [10,4,8,3] Output: [15,1,11,22] Explanation: The array leftSum is [0,10,14,22] and the array rightSum is [15,11,3,0]. The array answer is [|0 - 15|,|10 - 11|,|14 - 3|,|22 - 0|] = [15,1,11,22].
Example 2:
Input: nums = [1] Output: [0] Explanation: The array leftSum is [0] and the array rightSum is [0]. The array answer is [|0 - 0|] = [0].
Constraints:
1 <= nums.length <= 1000 1 <= nums[i] <= 105