You are given an integer array nums sorted in non-decreasing order.Build and return an integer array result with the same length as nums such that result[i] is equal to the summation of absolute differences between nums[i] and all the other elements in the array.In other words, result[i] is equal to sum(|nums[i]-nums[j]|) where 0 <= j < nums.length and j != i (0-indexed).
Question
You are given an integer array nums sorted in non-decreasing order.Build and return an integer array result with the same length as nums such that result[i] is equal to the summation of absolute differences between nums[i] and all the other elements in the array.In other words, result[i] is equal to sum(|nums[i]-nums[j]|) where 0 <= j < nums.length and j != i (0-indexed).
Solution
Sure, here is a Python solution for the problem:
def sum_of_absolute_differences(nums):
n = len(nums)
result = [0] * n
total_sum = sum(nums)
prefix_sum = 0
for i in range(n):
result[i] = (i * nums[i] - prefix_sum) + (total_sum - prefix_sum - (n - i) * nums[i])
prefix_sum += nums[i]
return result
Here is a step-by-step explanation of the solution:
-
Initialize the length of the array
nand the result arrayresultwith the same length asnums, filled with zeros. -
Calculate the total sum of the array
nums. -
Initialize a variable
prefix_sumto keep track of the sum of the elements before the current index. -
Iterate over the array
nums. For each indexi, calculate the sum of absolute differences betweennums[i]and all the other elements in the array. This is done by subtracting the prefix sum fromi * nums[i](which gives the sum of absolute differences for all elements beforei) and adding the sum of absolute differences for all elements afteri, which is calculated astotal_sum - prefix_sum - (n - i) * nums[i]. -
Add
nums[i]to the prefix sum. -
Return the result array.
Similar Questions
You are given a 0-indexed integer array nums having length n, an integer indexDifference, and an integer valueDifference.Your task is to find two indices i and j, both in the range [0, n - 1], that satisfy the following conditions:abs(i - j) >= indexDifference, andabs(nums[i] - nums[j]) >= valueDifferenceReturn an integer array answer, where answer = [i, j] if there are two such indices, and answer = [-1, -1] otherwise. If there are multiple choices for the two indices, return any of them.Note: i and j may be equal. Example 1:Input: nums = [5,1,4,1], indexDifference = 2, valueDifference = 4Output: [0,3]Explanation: In this example, i = 0 and j = 3 can be selected.abs(0 - 3) >= 2 and abs(nums[0] - nums[3]) >= 4.Hence, a valid answer is [0,3].[3,0] is also a valid answer.Example 2:Input: nums = [2,1], indexDifference = 0, valueDifference = 0Output: [0,0]Explanation: In this example, i = 0 and j = 0 can be selected.abs(0 - 0) >= 0 and abs(nums[0] - nums[0]) >= 0.Hence, a valid answer is [0,0].Other valid answers are [0,1], [1,0], and [1,1].Example 3:Input: nums = [1,2,3], indexDifference = 2, valueDifference = 4Output: [-1,-1]Explanation: In this example, it can be shown that it is impossible to find two indices that satisfy both conditions.Hence, [-1,-1] is returned. Constraints:1 <= n == nums.length <= 1050 <= nums[i] <= 1090 <= indexDifference <= 1050 <= valueDifference <= 109
You are given a 0-indexed array nums and an integer target.A 0-indexed array infinite_nums is generated by infinitely appending the elements of nums to itself.Return the length of the shortest subarray of the array infinite_nums with a sum equal to target. If there is no such subarray return -1
You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in nums1 and nums2 respectively.Merge nums1 and nums2 into a single array sorted in non-decreasing order.The final sorted array should not be returned by the function, but instead be stored inside the array nums1. To accommodate this, nums1 has a length of m + n, where the first m elements denote the elements that should be merged, and the last n elements are set to 0 and should be ignored. nums2 has a length of n. Example 1:Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3Output: [1,2,2,3,5,6]Explanation: The arrays we are merging are [1,2,3] and [2,5,6].The result of the merge is [1,2,2,3,5,6] with the underlined elements coming from nums1.Example 2:Input: nums1 = [1], m = 1, nums2 = [], n = 0Output: [1]Explanation: The arrays we are merging are [1] and [].The result of the merge is [1].Example 3:Input: nums1 = [0], m = 0, nums2 = [1], n = 1Output: [1]Explanation: The arrays we are merging are [] and [1].The result of the merge is [1].Note that because m = 0, there are no elements in nums1. The 0 is only there to ensure the merge result can fit in nums1. Constraints:nums1.length == m + nnums2.length == n0 <= m, n <= 2001 <= m + n <= 200-109 <= nums1[i], nums2[j] <= 109 Follow up: Can you come up with an algorithm that runs in O(m + n) time?
You are given a sorted array of integers. Write a program that implements a binary search algorithm to find the element with the minimum difference from the given target.Note: This question was asked in CTS coding test.Input format :The first line input consists of an integer N, representing the number of array elements.The second line consists of N space-separated integers, representing the sorted array elements.The third line consists of an integer representing the target element.Output format :The output prints an integer representing the element with the minimum difference from the given target.
Given an array of integers nums sorted in non-decreasing order, find the starting and ending position of a given target value.If target is not found in the array, return [-1, -1].You must write an algorithm with O(log n) runtime complexity. Example 1:Input: nums = [5,7,7,8,8,10], target = 8Output: [3,4]Example 2:Input: nums = [5,7,7,8,8,10], target = 6Output: [-1,-1]Example 3:Input: nums = [], target = 0Output: [-1,-1] Constraints:0 <= nums.length <= 105-109 <= nums[i] <= 109nums is a non-decreasing array.-109 <= target <= 109
Upgrade your grade with Knowee
Get personalized homework help. Review tough concepts in more detail, or go deeper into your topic by exploring other relevant questions.