本文主要是介绍leetcode - 1685. Sum of Absolute Differences in a Sorted Array,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Description
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).
Example 1:
Input: nums = [2,3,5]
Output: [4,3,5]
Explanation: Assuming the arrays are 0-indexed, then
result[0] = |2-2| + |2-3| + |2-5| = 0 + 1 + 3 = 4,
result[1] = |3-2| + |3-3| + |3-5| = 1 + 0 + 2 = 3,
result[2] = |5-2| + |5-3| + |5-5| = 3 + 2 + 0 = 5.
Example 2:
Input: nums = [1,4,6,8,10]
Output: [24,15,13,15,21]
Constraints:
2 <= nums.length <= 10^5
1 <= nums[i] <= nums[i + 1] <= 10^4
Solution
Since it’s absolute difference, the result[i]
is:
R [ i ] = n u m s [ i ] − n u m s [ j 1 ] + n u m s [ i ] − n u m s [ j 2 ] + … ⏟ numbers that are at the left of i + n u m s [ k 1 ] − n u m s [ i ] + n u m s [ k 2 ] − n u m s [ i ] + … ⏟ numbers that are at the right of i R[i] = \underbrace{nums[i] - nums[j_1] + nums[i] - nums[j_2] + \dots}_{\text{numbers that are at the left of i}} + \underbrace{nums[k_1] - nums[i] + nums[k_2] - nums[i] + \dots}_{\text{numbers that are at the right of i}} R[i]=numbers that are at the left of i nums[i]−nums[j1]+nums[i]−nums[j2]+…+numbers that are at the right of i nums[k1]−nums[i]+nums[k2]−nums[i]+…
So we use 2 variables to store the sum, and go through the list once.
Time complexity: o ( n ) o(n) o(n)
Space complexity: o ( 1 ) o(1) o(1)
Code
class Solution:def getSumAbsoluteDifferences(self, nums: List[int]) -> List[int]:all_sum = sum(nums)pre_sum = 0res = []n = len(nums)for i, each_num in enumerate(nums):all_sum -= each_numres.append(all_sum - (n - i - 1) * each_num + i * each_num - pre_sum)pre_sum += each_numreturn res
这篇关于leetcode - 1685. Sum of Absolute Differences in a Sorted Array的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!