Skip to content

Commit 9306af1

Browse files
committed
Solve '4. Median of Two Sorted Arrays'
1 parent cf8914a commit 9306af1

File tree

3 files changed

+105
-0
lines changed

3 files changed

+105
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package median
2+
3+
import (
4+
"fmt"
5+
"sort"
6+
)
7+
8+
func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {
9+
merged := make([]int, len(nums1)+len(nums2))
10+
merged = append(nums1, nums2...)
11+
12+
sort.Ints(merged)
13+
14+
fmt.Printf("merged: %+v \n", merged)
15+
16+
var median float64
17+
isbalanced := len(merged) % 2
18+
if isbalanced == 0 {
19+
middle := len(merged) / 2.0
20+
fmt.Printf("middle [%v]\n", middle)
21+
22+
median = float64(merged[middle]+merged[middle-1]) / 2
23+
} else {
24+
middle := (len(merged) - 1) / 2
25+
fmt.Printf("middle [%v]\n", middle)
26+
median = float64(merged[(middle)])
27+
}
28+
fmt.Printf("median: %v \n", median)
29+
return median
30+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package median
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
)
8+
9+
func Test_findMedianSortedArrays(t *testing.T) {
10+
type args struct {
11+
nums1 []int
12+
nums2 []int
13+
}
14+
tests := []struct {
15+
name string
16+
args args
17+
want float64
18+
}{
19+
{
20+
name: "",
21+
args: args{
22+
nums1: []int{1, 3},
23+
nums2: []int{2},
24+
},
25+
want: 2.0,
26+
},
27+
{
28+
name: "",
29+
args: args{
30+
nums1: []int{1, 2},
31+
nums2: []int{3, 4},
32+
},
33+
want: 2.5,
34+
},
35+
{
36+
name: "",
37+
args: args{
38+
nums1: []int{1, 2, 5, 9},
39+
nums2: []int{0, 4, 10, 11},
40+
},
41+
want: 4.5,
42+
},
43+
}
44+
for _, tt := range tests {
45+
t.Run(tt.name, func(t *testing.T) {
46+
got := findMedianSortedArrays(tt.args.nums1, tt.args.nums2)
47+
assert.Equal(t, tt.want, got)
48+
49+
})
50+
}
51+
}

4-median-of-two-sorted-arrays/spec.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# 4. Median of Two Sorted Arrays
2+
3+
<https://leetcode.com/problems/median-of-two-sorted-arrays/>
4+
5+
There are two sorted arrays nums1 and nums2 of size m and n respectively.
6+
7+
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
8+
9+
You may assume nums1 and nums2 cannot be both empty.
10+
11+
Example 1:
12+
13+
```text
14+
nums1 = [1, 3]
15+
nums2 = [2]
16+
17+
The median is 2.0
18+
Example 2:
19+
20+
nums1 = [1, 2]
21+
nums2 = [3, 4]
22+
23+
The median is (2 + 3)/2 = 2.5
24+
```

0 commit comments

Comments
 (0)