File tree 2 files changed +83
-0
lines changed
2 files changed +83
-0
lines changed Original file line number Diff line number Diff line change @@ -192,6 +192,50 @@ private:
192
192
};
193
193
```
194
194
195
+ ### **TypeScript**
196
+
197
+ ```ts
198
+ function reversePairs(nums: number[]): number {
199
+ let count: number = 0;
200
+ const n: number = nums.length;
201
+ if (n < 2) return 0;
202
+
203
+ function merge(nums: number[], left: number, mid: number, right: number): void {
204
+ let n: number = right - left + 1;
205
+ let t: number[] = new Array(n);
206
+ let i: number = left, j: number = mid + 1, idx: number = 0;
207
+ while (i <= mid && j <= right) {
208
+ if (nums[i] > nums[j]) {
209
+ count += (mid - i + 1);
210
+ t[idx++] = nums[j++];
211
+ } else {
212
+ t[idx++] = nums[i++];
213
+ }
214
+ }
215
+ while (i <= mid) {
216
+ t[idx++] = nums[i++];
217
+ }
218
+ while (j <= right) {
219
+ t[idx++] = nums[j++];
220
+ }
221
+ for (let k: number = 0; k < n; ++k) {
222
+ nums[left + k] = t[k];
223
+ }
224
+ }
225
+
226
+ function mergeSort(nums: number[], left: number, right: number): void {
227
+ if (left == right) return;
228
+ let mid: number = (left + right) >> 1;
229
+ mergeSort(nums, left, mid);
230
+ mergeSort(nums, mid + 1, right);
231
+ merge(nums, left, mid, right);
232
+ }
233
+
234
+ mergeSort(nums, 0, n - 1);
235
+ return count;
236
+ };
237
+ ```
238
+
195
239
### ** ...**
196
240
197
241
```
Original file line number Diff line number Diff line change
1
+ function reversePairs ( nums : number [ ] ) : number {
2
+ let count : number = 0 ;
3
+ const n : number = nums . length ;
4
+ if ( n < 2 ) return 0 ;
5
+
6
+ function merge ( nums : number [ ] , left : number , mid : number , right : number ) : void {
7
+ let n : number = right - left + 1 ;
8
+ let t : number [ ] = new Array ( n ) ;
9
+ let i : number = left , j : number = mid + 1 , idx : number = 0 ;
10
+ while ( i <= mid && j <= right ) {
11
+ if ( nums [ i ] > nums [ j ] ) {
12
+ count += ( mid - i + 1 ) ;
13
+ t [ idx ++ ] = nums [ j ++ ] ;
14
+ } else {
15
+ t [ idx ++ ] = nums [ i ++ ] ;
16
+ }
17
+ }
18
+ while ( i <= mid ) {
19
+ t [ idx ++ ] = nums [ i ++ ] ;
20
+ }
21
+ while ( j <= right ) {
22
+ t [ idx ++ ] = nums [ j ++ ] ;
23
+ }
24
+ for ( let k : number = 0 ; k < n ; ++ k ) {
25
+ nums [ left + k ] = t [ k ] ;
26
+ }
27
+ }
28
+
29
+ function mergeSort ( nums : number [ ] , left : number , right : number ) : void {
30
+ if ( left == right ) return ;
31
+ let mid : number = ( left + right ) >> 1 ;
32
+ mergeSort ( nums , left , mid ) ;
33
+ mergeSort ( nums , mid + 1 , right ) ;
34
+ merge ( nums , left , mid , right ) ;
35
+ }
36
+
37
+ mergeSort ( nums , 0 , n - 1 ) ;
38
+ return count ;
39
+ } ;
You can’t perform that action at this time.
0 commit comments