diff --git a/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/README.md b/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/README.md index 64b1f44e0ee6b..70b19aa6557fd 100644 --- a/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/README.md +++ b/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/README.md @@ -41,11 +41,12 @@ result[2] = |5-2| + |5-3| + |5-5| = 3 + 2 + 0 = 5。
  • 1 <= nums[i] <= nums[i + 1] <= 104
  • - ## 解法 +前缀和实现。 + ### **Python3** @@ -53,7 +54,17 @@ result[2] = |5-2| + |5-3| + |5-5| = 3 + 2 + 0 = 5。 ```python - +class Solution: + def getSumAbsoluteDifferences(self, nums: List[int]) -> List[int]: + n = len(nums) + presum = [0] * (n + 1) + for i in range(n): + presum[i + 1] = presum[i] + nums[i] + res = [] + for i, num in enumerate(nums): + t = num * i - presum[i] + presum[n] - presum[i + 1] - num * (n - i - 1) + res.append(t) + return res ``` ### **Java** @@ -61,7 +72,59 @@ result[2] = |5-2| + |5-3| + |5-5| = 3 + 2 + 0 = 5。 ```java +class Solution { + public int[] getSumAbsoluteDifferences(int[] nums) { + int n = nums.length; + int[] presum = new int[n + 1]; + for (int i = 0; i < n; ++i) { + presum[i + 1] = presum[i] + nums[i]; + } + int[] res = new int[n]; + for (int i = 0; i < n; ++i) { + res[i] = nums[i] * i - presum[i] + presum[n] - presum[i + 1] - nums[i] * (n - i - 1); + } + return res; + } +} +``` + +### **C++** + +```cpp +class Solution { +public: + vector getSumAbsoluteDifferences(vector& nums) { + int n = nums.size(); + vector presum(n + 1); + for (int i = 0; i < n; ++i) { + presum[i + 1] = presum[i] + nums[i]; + } + vector res; + for (int i = 0; i < n; ++i) { + int t = nums[i] * i - presum[i] + presum[n] - presum[i + 1] - nums[i] * (n - i - 1); + res.push_back(t); + } + return res; + } +}; +``` +### **Go** + +```go +func getSumAbsoluteDifferences(nums []int) []int { + n := len(nums) + presum := make([]int, n+1) + for i := 0; i < n; i++ { + presum[i+1] = presum[i] + nums[i] + } + var res []int + for i := 0; i < n; i++ { + t := nums[i]*i - presum[i] + presum[n] - presum[i+1] - nums[i]*(n-i-1) + res = append(res, t) + } + return res +} ``` ### **...** diff --git a/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/README_EN.md b/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/README_EN.md index 5fdd6965ee8f5..3800bf7345623 100644 --- a/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/README_EN.md +++ b/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/README_EN.md @@ -37,7 +37,6 @@ result[2] = |5-2| + |5-3| + |5-5| = 3 + 2 + 0 = 5.
  • 1 <= nums[i] <= nums[i + 1] <= 104
  • - ## Solutions @@ -45,13 +44,75 @@ result[2] = |5-2| + |5-3| + |5-5| = 3 + 2 + 0 = 5. ### **Python3** ```python - +class Solution: + def getSumAbsoluteDifferences(self, nums: List[int]) -> List[int]: + n = len(nums) + presum = [0] * (n + 1) + for i in range(n): + presum[i + 1] = presum[i] + nums[i] + res = [] + for i, num in enumerate(nums): + t = num * i - presum[i] + presum[n] - presum[i + 1] - num * (n - i - 1) + res.append(t) + return res ``` ### **Java** ```java +class Solution { + public int[] getSumAbsoluteDifferences(int[] nums) { + int n = nums.length; + int[] presum = new int[n + 1]; + for (int i = 0; i < n; ++i) { + presum[i + 1] = presum[i] + nums[i]; + } + int[] res = new int[n]; + for (int i = 0; i < n; ++i) { + res[i] = nums[i] * i - presum[i] + presum[n] - presum[i + 1] - nums[i] * (n - i - 1); + } + return res; + } +} +``` + +### **C++** + +```cpp +class Solution { +public: + vector getSumAbsoluteDifferences(vector& nums) { + int n = nums.size(); + vector presum(n + 1); + for (int i = 0; i < n; ++i) { + presum[i + 1] = presum[i] + nums[i]; + } + vector res; + for (int i = 0; i < n; ++i) { + int t = nums[i] * i - presum[i] + presum[n] - presum[i + 1] - nums[i] * (n - i - 1); + res.push_back(t); + } + return res; + } +}; +``` +### **Go** + +```go +func getSumAbsoluteDifferences(nums []int) []int { + n := len(nums) + presum := make([]int, n+1) + for i := 0; i < n; i++ { + presum[i+1] = presum[i] + nums[i] + } + var res []int + for i := 0; i < n; i++ { + t := nums[i]*i - presum[i] + presum[n] - presum[i+1] - nums[i]*(n-i-1) + res = append(res, t) + } + return res +} ``` ### **...** diff --git a/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/Solution.cpp b/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/Solution.cpp new file mode 100644 index 0000000000000..9739c239b26da --- /dev/null +++ b/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/Solution.cpp @@ -0,0 +1,16 @@ +class Solution { +public: + vector getSumAbsoluteDifferences(vector& nums) { + int n = nums.size(); + vector presum(n + 1); + for (int i = 0; i < n; ++i) { + presum[i + 1] = presum[i] + nums[i]; + } + vector res; + for (int i = 0; i < n; ++i) { + int t = nums[i] * i - presum[i] + presum[n] - presum[i + 1] - nums[i] * (n - i - 1); + res.push_back(t); + } + return res; + } +}; \ No newline at end of file diff --git a/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/Solution.go b/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/Solution.go new file mode 100644 index 0000000000000..d0d1b7c36d5dd --- /dev/null +++ b/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/Solution.go @@ -0,0 +1,13 @@ +func getSumAbsoluteDifferences(nums []int) []int { + n := len(nums) + presum := make([]int, n+1) + for i := 0; i < n; i++ { + presum[i+1] = presum[i] + nums[i] + } + var res []int + for i := 0; i < n; i++ { + t := nums[i]*i - presum[i] + presum[n] - presum[i+1] - nums[i]*(n-i-1) + res = append(res, t) + } + return res +} \ No newline at end of file diff --git a/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/Solution.java b/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/Solution.java new file mode 100644 index 0000000000000..6b9afe944eb94 --- /dev/null +++ b/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/Solution.java @@ -0,0 +1,14 @@ +class Solution { + public int[] getSumAbsoluteDifferences(int[] nums) { + int n = nums.length; + int[] presum = new int[n + 1]; + for (int i = 0; i < n; ++i) { + presum[i + 1] = presum[i] + nums[i]; + } + int[] res = new int[n]; + for (int i = 0; i < n; ++i) { + res[i] = nums[i] * i - presum[i] + presum[n] - presum[i + 1] - nums[i] * (n - i - 1); + } + return res; + } +} \ No newline at end of file diff --git a/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/Solution.py b/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/Solution.py new file mode 100644 index 0000000000000..1a2fa22c0184d --- /dev/null +++ b/solution/1600-1699/1685.Sum of Absolute Differences in a Sorted Array/Solution.py @@ -0,0 +1,11 @@ +class Solution: + def getSumAbsoluteDifferences(self, nums: List[int]) -> List[int]: + n = len(nums) + presum = [0] * (n + 1) + for i in range(n): + presum[i + 1] = presum[i] + nums[i] + res = [] + for i, num in enumerate(nums): + t = num * i - presum[i] + presum[n] - presum[i + 1] - num * (n - i - 1) + res.append(t) + return res