Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 4256bb6

Browse files
authored
88 merge sorted array solved (#13)
* 88 merge sorted array solved * add more ut case for 88 merge sorted array * fix ut case of 88 merge sorted array
1 parent 885943d commit 4256bb6

File tree

4 files changed

+79
-0
lines changed

4 files changed

+79
-0
lines changed

‎README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ continually updating 😃.
1515
* [27. Remove Element](src/0027_remove_element/remove_element.go)   *`double index;`*  *`array`*
1616
* [75. Sort Colors](./src/0075_sort_colors/sort_colors.go)   *`sort;`*  *`array`*
1717
* [80. Remove Duplicates from Sorted Array II](./src/0080_remove_duplicates_from_sorted_array2/rdfsa2.go)   *`double index;`*  *`array`*
18+
* [88. Merge Sorted Array](./src/0088_merge_sorted_array/msa.go)   *`sort;`*  *`array`*
1819
* [167. Two Sum II - Input array is sorted](./src/0167_two_sum2/two_sum2.go)   *`double index;`*  *`binary search`*
1920
* [209. Minimum Size Subarray Sum](./src/0209_minimum_size_subarray_sum/minimum_size_subarray_sum.go)   *`sliding window`*
2021
* [283. Move Zeroes(solution1)](./src/0283_move_zeroes/move_zeroes.go)   *`sliding window`*

‎src/0088_merge_sorted_array/msa.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*
2+
88. Merge Sorted Array
3+
https://leetcode.com/problems/merge-sorted-array/
4+
5+
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
6+
7+
Note:
8+
1. The number of elements initialized in nums1 and nums2 are m and n respectively.
9+
2. You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2.
10+
*/
11+
12+
// time: 2018年12月21日
13+
14+
package msa
15+
16+
// standard merge process in merge sort
17+
// time complexity: O(n+m)
18+
// space complexity: O(1)
19+
func merge(nums1 []int, m int, nums2 []int, n int) {
20+
for i := n + m - 1; i >= n; i-- {
21+
nums1[i] = nums1[i-n]
22+
}
23+
24+
var (
25+
i = n // pointer for nums1 [n, n+m)
26+
j = 0 // pointer for nums2 [0, n)
27+
k = 0 // pointer for merged nums1 [0, n+m)
28+
)
29+
30+
for k < n+m {
31+
if i >= n+m {
32+
nums1[k] = nums2[j]
33+
k++
34+
j++
35+
} else if j >= n {
36+
break
37+
// nums1[k] = nums1[i]
38+
// k++
39+
// i++
40+
} else if nums1[i] < nums2[j] {
41+
nums1[k] = nums1[i]
42+
i++
43+
k++
44+
} else { //nums1[i] >= nums2[j]
45+
nums1[k] = nums2[j]
46+
k++
47+
j++
48+
}
49+
}
50+
}

‎src/0088_merge_sorted_array/msa_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package msa
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
)
7+
8+
func TestMerge(t *testing.T) {
9+
type arg struct {
10+
nums1 []int
11+
m int
12+
nums2 []int
13+
n int
14+
}
15+
testCases := []arg{
16+
{nums1: []int{1, 2, 3, 7, 0, 0, 0}, m: 4, nums2: []int{2, 5, 6}, n: 3},
17+
{nums1: []int{2, 5, 6, 0, 0, 0}, m: 3, nums2: []int{7, 8, 9}, n: 3},
18+
}
19+
20+
expected := [][]int{{1, 2, 2, 3, 5, 6, 7}, {2, 5, 6, 7, 8, 9}}
21+
22+
for index, data := range testCases {
23+
if merge(data.nums1, data.m, data.nums2, data.n); !reflect.DeepEqual(expected[index], data.nums1) {
24+
t.Errorf("expected %v, got %v", expected[index], data.nums1)
25+
}
26+
}
27+
}

‎src/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
|0075|[75. Sort Colors](0075_sort_colors/sort_colors.go)|Medium|*`sort`*|
2424
|0076|[Minimum Window Substring](./0076_minimum_window_substring/minimum_window_substring.go)|Hard|*`sliding window`*|
2525
|0080|[80. Remove Duplicates from Sorted Array II](0080_remove_duplicates_from_sorted_array2/rdfsa2.go)|Medium|*`double index`*|
26+
|0088|[88. Merge Sorted Array](0088_merge_sorted_array/msa.go)|Easy|*`sort`*|
2627
|0094|[Binary Tree Inorder Traversal](./0094_binary_tree_inorder_traversal/binary_tree_inorder_traversal.go)|Medium|*`binary tree`*|
2728
|0100|[Same Tree](./0100_same_tree/same_tree.go)|Easy|*`binary tree`*|
2829
|0101|[Symmetric Tree](./0101_symmetric_tree/symmetric_tree.go)|Easy|*`stack;`* *`recursion; `* *`iterative`*|

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /