File tree Expand file tree Collapse file tree 1 file changed +15
-25
lines changed Expand file tree Collapse file tree 1 file changed +15
-25
lines changed Original file line number Diff line number Diff line change 1
1
/*
2
2
* @lc app=leetcode.cn id=88 lang=javascript
3
+
4
+ https://leetcode.cn/problems/merge-sorted-array/description/
5
+ 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
6
+ 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
7
+ 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。
8
+
3
9
*
4
10
* [88] 合并两个有序数组
5
11
*/
12
18
* @param {number } n
13
19
* @return {void } Do not return anything, modify nums1 in-place instead.
14
20
*/
15
- let merge = function ( arr1 , m , arr2 , n ) {
16
- // 两个指针指向数组非空位置的末尾
17
- let i = m - 1 ;
18
- let j = n - 1 ;
19
- // 第三个指针指向第一个数组的末尾 填充数据
20
- let k = arr1 . length - 1 ;
21
-
22
- while ( i >= 0 && j >= 0 ) {
23
- let num1 = arr1 [ i ] ;
24
- let num2 = arr2 [ j ] ;
25
-
26
- if ( num1 > num2 ) {
27
- arr1 [ k ] = num1 ;
28
- i -- ;
29
- } else {
30
- arr1 [ k ] = num2 ;
31
- j -- ;
21
+ var merge = function ( nums1 , m , nums2 , n ) {
22
+ let p1 = m - 1 , p2 = n - 1 , p = m + n - 1 ;
23
+ while ( p2 >= 0 ) { // nums2 还有要合并的元素
24
+ // 如果 p1 < 0,那么走 else 分支,把 nums2 合并到 nums1 中
25
+ if ( p1 >= 0 && nums1 [ p1 ] > nums2 [ p2 ] ) {
26
+ nums1 [ p -- ] = nums1 [ p1 -- ] ; // 填入 nums1[p1]
27
+ } else {
28
+ nums1 [ p -- ] = nums2 [ p2 -- ] ; // 填入 nums2[p1]
29
+ }
32
30
}
33
- k -- ;
34
- }
35
-
36
- while ( j >= 0 ) {
37
- arr1 [ k ] = arr2 [ j ] ;
38
- j -- ;
39
- k -- ;
40
- }
41
31
} ;
42
32
// @lc code=end
You can’t perform that action at this time.
0 commit comments