Skip to content

Commit 56c579d

Browse files
committed
feat: update leetcode solutions: No.0088. Merge Sorted Array
1 parent ed54ca7 commit 56c579d

File tree

7 files changed

+124
-74
lines changed

7 files changed

+124
-74
lines changed

README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -177,16 +177,16 @@
177177

178178
## 维护者
179179

180-
[Yang Libin](https://github.com/yanglbme): GitHub / Gitee 技术社区 @Doocs 创建者开源组织 [@TheAlgorithms](https://github.com/TheAlgorithms) 核心成员之一
180+
[Yang Libin](https://github.com/yanglbme): 开源社区 @Doocs 创建者[GitHub](https://github.com/doocs) / [Gitee](https://gitee.com/doocs)」;GitHub 开源组织 [@TheAlgorithms](https://github.com/TheAlgorithms) 成员
181181

182182
## 加入我们
183183

184184
刷编程题的最大好处就是可以锻炼解决问题的思维能力。相信我,「如何去思考」​ 本身也是一项需要不断学习和练习的技能。非常感谢前微软工程师、现蚂蚁金服技术专家 [@kfstorm](https://github.com/kfstorm) 贡献了本项目的所有 [C# 题解](https://github.com/doocs/leetcode/pull/245)
185185

186-
如果你对本项目感兴趣,并且希望加入我们刷题大军,欢迎随时提交 [PR](https://github.com/doocs/leetcode/pulls)。请参考如下步骤:
186+
如果你对本项目感兴趣,并且希望加入我们刷题小分队,欢迎随时提交 [PR](https://github.com/doocs/leetcode/pulls)。请参考如下步骤:
187187

188188
1. 将本项目 fork 到你的个人 GitHub / Gitee 帐户,然后 clone 到你的本地机器;
189-
1. 对项目做出一些变更,然后使用 git add、commit、push 等命令将你的变更提交到你的远程 GitHub / Gitee 仓库;
189+
1. 对项目做出一些变更,然后使用 git add、commit、push 等命令将你的本地变更提交到你的远程 GitHub / Gitee 仓库;
190190
1. 将你的变更以 PR 的形式提交过来,项目的维护人员会在第一时间对你的变更进行 review!
191191
1. 你也可以参考帮助文档「[GitHub](https://help.github.com/cn) / [Gitee](https://gitee.com/help)」了解更多细节。
192192

solution/0000-0099/0088.Merge Sorted Array/README.md

+45-5
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ class Solution:
4444
"""
4545
Do not return anything, modify nums1 in-place instead.
4646
"""
47-
i, j = m - 1, n - 1
48-
k = m + n - 1
47+
i, j, k = m - 1, n - 1, m + n - 1
4948
while j >= 0:
5049
if i >= 0 and nums1[i] > nums2[j]:
5150
nums1[k] = nums1[i]
@@ -63,10 +62,9 @@ class Solution:
6362
```java
6463
class Solution {
6564
public void merge(int[] nums1, int m, int[] nums2, int n) {
66-
int i = m - 1, j = n - 1;
67-
int k = m + n - 1;
65+
int i = m - 1, j = n - 1, k = m + n - 1;
6866
while (j >= 0) {
69-
if (i >= 0 && nums1[i] >= nums2[j]) {
67+
if (i >= 0 && nums1[i] > nums2[j]) {
7068
nums1[k--] = nums1[i--];
7169
} else {
7270
nums1[k--] = nums2[j--];
@@ -76,6 +74,48 @@ class Solution {
7674
}
7775
```
7876

77+
### **Go**
78+
79+
```go
80+
func merge(nums1 []int, m int, nums2 []int, n int) {
81+
i, j, k := m - 1, n - 1, m + n - 1
82+
for j >= 0 {
83+
if i >= 0 && nums1[i] > nums2[j] {
84+
nums1[k] = nums1[i]
85+
i--
86+
} else {
87+
nums1[k] = nums2[j]
88+
j--
89+
}
90+
k--
91+
}
92+
}
93+
```
94+
95+
### **JavaScript**
96+
97+
```js
98+
/**
99+
* @param {number[]} nums1
100+
* @param {number} m
101+
* @param {number[]} nums2
102+
* @param {number} n
103+
* @return {void} Do not return anything, modify nums1 in-place instead.
104+
*/
105+
var merge = function (nums1, m, nums2, n) {
106+
let i = m - 1,
107+
j = n - 1,
108+
k = m + n - 1;
109+
while (j >= 0) {
110+
if (i >= 0 && nums1[i] > nums2[j]) {
111+
nums1[k--] = nums1[i--];
112+
} else {
113+
nums1[k--] = nums2[j--];
114+
}
115+
}
116+
};
117+
```
118+
79119
### **...**
80120

81121
```

solution/0000-0099/0088.Merge Sorted Array/README_EN.md

+45-5
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,7 @@ class Solution:
4141
"""
4242
Do not return anything, modify nums1 in-place instead.
4343
"""
44-
i, j = m - 1, n - 1
45-
k = m + n - 1
44+
i, j, k = m - 1, n - 1, m + n - 1
4645
while j >= 0:
4746
if i >= 0 and nums1[i] > nums2[j]:
4847
nums1[k] = nums1[i]
@@ -58,10 +57,9 @@ class Solution:
5857
```java
5958
class Solution {
6059
public void merge(int[] nums1, int m, int[] nums2, int n) {
61-
int i = m - 1, j = n - 1;
62-
int k = m + n - 1;
60+
int i = m - 1, j = n - 1, k = m + n - 1;
6361
while (j >= 0) {
64-
if (i >= 0 && nums1[i] >= nums2[j]) {
62+
if (i >= 0 && nums1[i] > nums2[j]) {
6563
nums1[k--] = nums1[i--];
6664
} else {
6765
nums1[k--] = nums2[j--];
@@ -71,6 +69,48 @@ class Solution {
7169
}
7270
```
7371

72+
### **Go**
73+
74+
```go
75+
func merge(nums1 []int, m int, nums2 []int, n int) {
76+
i, j, k := m - 1, n - 1, m + n - 1
77+
for j >= 0 {
78+
if i >= 0 && nums1[i] > nums2[j] {
79+
nums1[k] = nums1[i]
80+
i--
81+
} else {
82+
nums1[k] = nums2[j]
83+
j--
84+
}
85+
k--
86+
}
87+
}
88+
```
89+
90+
### **JavaScript**
91+
92+
```js
93+
/**
94+
* @param {number[]} nums1
95+
* @param {number} m
96+
* @param {number[]} nums2
97+
* @param {number} n
98+
* @return {void} Do not return anything, modify nums1 in-place instead.
99+
*/
100+
var merge = function (nums1, m, nums2, n) {
101+
let i = m - 1,
102+
j = n - 1,
103+
k = m + n - 1;
104+
while (j >= 0) {
105+
if (i >= 0 && nums1[i] > nums2[j]) {
106+
nums1[k--] = nums1[i--];
107+
} else {
108+
nums1[k--] = nums2[j--];
109+
}
110+
}
111+
};
112+
```
113+
74114
### **...**
75115

76116
```
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,13 @@
1-
func merge(nums1 []int, m int, nums2 []int, n int) {
2-
ret := make([]int, m+n)
3-
copy(ret, nums1[:m])
4-
p0, p1, p2 := 0, 0, 0
5-
for ; p1 < m && p2 < n; p0++ {
6-
if nums1[p1] >= nums2[p2] {
7-
ret[p0] = nums2[p2]
8-
p2++
9-
} else if nums1[p1] < nums2[p2] {
10-
ret[p0] = nums1[p1]
11-
p1++
12-
}
13-
}
14-
if p1 < m {
15-
copy(nums1, append(ret[:p0], nums1[p1:m]...))
16-
}
17-
if p2 < n {
18-
copy(nums1, append(ret[:p0], nums2[p2:]...))
19-
}
20-
}
1+
func merge(nums1 []int, m int, nums2 []int, n int) {
2+
i, j, k := m - 1, n - 1, m + n - 1
3+
for j >= 0 {
4+
if i >= 0 && nums1[i] > nums2[j] {
5+
nums1[k] = nums1[i]
6+
i--
7+
} else {
8+
nums1[k] = nums2[j]
9+
j--
10+
}
11+
k--
12+
}
13+
}

solution/0000-0099/0088.Merge Sorted Array/Solution.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
class Solution {
22
public void merge(int[] nums1, int m, int[] nums2, int n) {
3-
int i = m - 1, j = n - 1;
4-
int k = m + n - 1;
3+
int i = m - 1, j = n - 1, k = m + n - 1;
54
while (j >= 0) {
6-
if (i >= 0 && nums1[i] >= nums2[j]) {
5+
if (i >= 0 && nums1[i] > nums2[j]) {
76
nums1[k--] = nums1[i--];
87
} else {
98
nums1[k--] = nums2[j--];
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,19 @@
1-
//beat 88%
2-
const merge1 = function (nums1, m, nums2, n) {
3-
const arr = nums1.slice(0, m);
4-
let i = 0,
5-
j = 0;
6-
let count = 0;
7-
while (i < m && j < n) {
8-
if (arr[i] <= nums2[j]) {
9-
nums1[count++] = arr[i++];
1+
/**
2+
* @param {number[]} nums1
3+
* @param {number} m
4+
* @param {number[]} nums2
5+
* @param {number} n
6+
* @return {void} Do not return anything, modify nums1 in-place instead.
7+
*/
8+
var merge = function (nums1, m, nums2, n) {
9+
let i = m - 1,
10+
j = n - 1,
11+
k = m + n - 1;
12+
while (j >= 0) {
13+
if (i >= 0 && nums1[i] > nums2[j]) {
14+
nums1[k--] = nums1[i--];
1015
} else {
11-
nums1[count++] = nums2[j++];
16+
nums1[k--] = nums2[j--];
1217
}
1318
}
14-
while (i < m) {
15-
nums1[count++] = arr[i++];
16-
}
17-
while (j < n) {
18-
nums1[count++] = nums2[j++];
19-
}
20-
};
21-
22-
//beat 30%....
23-
const merge = function (nums1, m, nums2, n) {
24-
let index = m + n - 1;
25-
let aindex = m - 1;
26-
let bindex = n - 1;
27-
while (aindex >= 0 && bindex >= 0) {
28-
if (nums1[aindex] > nums2[bindex]) {
29-
nums1[index--] = nums1[aindex--];
30-
} else {
31-
nums1[index--] = nums2[bindex--];
32-
}
33-
}
34-
while (aindex >= 0) {
35-
nums1[index--] = nums1[aindex--];
36-
}
37-
while (bindex >= 0) {
38-
nums1[index--] = nums2[bindex--];
39-
}
4019
};

solution/0000-0099/0088.Merge Sorted Array/Solution.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
33
"""
44
Do not return anything, modify nums1 in-place instead.
55
"""
6-
i, j = m - 1, n - 1
7-
k = m + n - 1
6+
i, j, k = m - 1, n - 1, m + n - 1
87
while j >= 0:
98
if i >= 0 and nums1[i] > nums2[j]:
109
nums1[k] = nums1[i]

0 commit comments

Comments
 (0)