diff --git a/dsa-solutions/lc-solutions/0400-0499/0493-reverse-pairs.md b/dsa-solutions/lc-solutions/0400-0499/0493-reverse-pairs.md
index 0eba99b78..0cdf67ba0 100644
--- a/dsa-solutions/lc-solutions/0400-0499/0493-reverse-pairs.md
+++ b/dsa-solutions/lc-solutions/0400-0499/0493-reverse-pairs.md
@@ -14,7 +14,7 @@ description: The problem is to reverse the pairs.
sidebar_position: 2667
---
-## Problem Statement
+## Problem Statement
### Problem Description
@@ -58,14 +58,12 @@ Explanation: The reverse pairs are:
The intuition behind this solution is to use a modified Merge Sort algorithm to count the number of reverse pairs in the array.
-
### Approaches
- Divide the array into smaller subarrays until each subarray has only one element.
- Merge the subarrays back together, counting the number of reverse pairs between each pair of subarrays.
- The merge step is done in a way that ensures the count of reverse pairs is accurate.
-
#### Codes in Different Languages
@@ -83,37 +81,36 @@ The intuition behind this solution is to use a modified Merge Sort algorithm to
}
function merge(nums, left, mid, right) {
- let count = 0;
- let j = mid + 1;
- for (let i = left; i <= mid; i++) {
- while (j <= right && nums[i] > 2 * nums[j]) j++;
- count += j - mid - 1;
- }
- let temp = new Array(right - left + 1);
- mergeSortedArrays(nums, left, mid, right, temp);
- for (let i = left; i <= right; i++) nums[i] = temp[i - left];
- return count;
+let count = 0;
+let j = mid + 1;
+for (let i = left; i <= mid; i++) {
+while (j <= right && nums[i] > 2 \* nums[j]) j++;
+count += j - mid - 1;
+}
+let temp = new Array(right - left + 1);
+mergeSortedArrays(nums, left, mid, right, temp);
+for (let i = left; i <= right; i++) nums[i] = temp[i - left];
+return count;
}
function mergeSort(nums, left, right) {
- if (left >= right) return 0;
- let mid = left + (right - left) / 2;
- let count = mergeSort(nums, left, mid) + mergeSort(nums, mid + 1, right);
- count += merge(nums, left, mid, right);
- return count;
+if (left >= right) return 0;
+let mid = left + (right - left) / 2;
+let count = mergeSort(nums, left, mid) + mergeSort(nums, mid + 1, right);
+count += merge(nums, left, mid, right);
+return count;
}
class Solution {
- reversePairs(nums) {
- return mergeSort(nums, 0, nums.length - 1);
- }
+reversePairs(nums) {
+return mergeSort(nums, 0, nums.length - 1);
+}
}
-
```
-
+
```typescript
function mergeSortedArrays(nums: number[], left: number, mid: number, right: number, temp: number[]) {
let i = left, j = mid + 1, k = 0;
@@ -126,35 +123,35 @@ class Solution {
}
function merge(nums: number[], left: number, mid: number, right: number) {
- let count = 0;
- let j = mid + 1;
- for (let i = left; i <= mid; i++) {
- while (j <= right && nums[i] > 2 * nums[j]) j++;
- count += j - mid - 1;
- }
- let temp = new Array(right - left + 1);
- mergeSortedArrays(nums, left, mid, right, temp);
- for (let i = left; i <= right; i++) nums[i] = temp[i - left];
- return count;
+let count = 0;
+let j = mid + 1;
+for (let i = left; i <= mid; i++) {
+while (j <= right && nums[i] > 2 \* nums[j]) j++;
+count += j - mid - 1;
+}
+let temp = new Array(right - left + 1);
+mergeSortedArrays(nums, left, mid, right, temp);
+for (let i = left; i <= right; i++) nums[i] = temp[i - left];
+return count;
}
function mergeSort(nums: number[], left: number, right: number) {
- if (left >= right) return 0;
- let mid = left + (right - left) / 2;
- let count = mergeSort(nums, left, mid) + mergeSort(nums, mid + 1, right);
- count += merge(nums, left, mid, right);
- return count;
+if (left >= right) return 0;
+let mid = left + (right - left) / 2;
+let count = mergeSort(nums, left, mid) + mergeSort(nums, mid + 1, right);
+count += merge(nums, left, mid, right);
+return count;
}
class Solution {
- reversePairs(nums: number[]) {
- return mergeSort(nums, 0, nums.length - 1);
- }
+reversePairs(nums: number[]) {
+return mergeSort(nums, 0, nums.length - 1);
+}
}
```
-
+
```python
def merge_sorted_arrays(nums, left, mid, right, temp):
@@ -177,29 +174,29 @@ class Solution {
k += 1
def merge(nums, left, mid, right):
- count = 0
- j = mid + 1
- for i in range(left, mid + 1):
- while j <= right and nums[i] > 2 * nums[j]:
- j += 1
- count += j - mid - 1
- temp = [0] * (right - left + 1)
- merge_sorted_arrays(nums, left, mid, right, temp)
- for i in range(left, right + 1):
- nums[i] = temp[i - left]
- return count
+count = 0
+j = mid + 1
+for i in range(left, mid + 1):
+while j <= right and nums[i] > 2 _ nums[j]:
+j += 1
+count += j - mid - 1
+temp = [0] _ (right - left + 1)
+merge_sorted_arrays(nums, left, mid, right, temp)
+for i in range(left, right + 1):
+nums[i] = temp[i - left]
+return count
def merge_sort(nums, left, right):
- if left >= right:
- return 0
- mid = left + (right - left) // 2
- count = merge_sort(nums, left, mid) + merge_sort(nums, mid + 1, right)
- count += merge(nums, left, mid, right)
- return count
+if left >= right:
+return 0
+mid = left + (right - left) // 2
+count = merge_sort(nums, left, mid) + merge_sort(nums, mid + 1, right)
+count += merge(nums, left, mid, right)
+return count
class Solution:
- def reversePairs(self, nums):
- return merge_sort(nums, 0, len(nums) - 1)
+def reversePairs(self, nums):
+return merge_sort(nums, 0, len(nums) - 1)
```
@@ -255,9 +252,11 @@ class Solution:
temp[k++] = nums[j++];
}
}
+
}
```
+
@@ -291,28 +290,24 @@ int mergeSort(vector& nums, int left, int right) {
return count;
}
-
class Solution {
public:
- int reversePairs(vector& nums) {
- return mergeSort(nums, 0, nums.size() - 1);
-
+int reversePairs(vector& nums) {
+return mergeSort(nums, 0, nums.size() - 1);
}
+
};
- ```
-
+```
+
### Complexity Analysis
- **Time Complexity**: $$O(n*log(n))$$, where n is the length of the input array. This is because the solution uses a modified Merge Sort algorithm, which has a time complexity of O(n log n).
-
- **Space Complexity**: $$O(n)$$, where n is the length of the input array. This is because the solution uses a temporary array to store the merged sorted arrays.
-
-
---
Authors:
@@ -320,4 +315,4 @@ public:
{['Ishitamukherjee2004'].map(username => (
-))}
\ No newline at end of file
+))}