Prechádzať zdrojové kódy

两个有序array寻找中位数

tangs 5 rokov pred
rodič
commit
48b2e44eff
1 zmenil súbory, kde vykonal 53 pridanie a 0 odobranie
  1. 53 0
      tags/array/medianOfTwoSortedArrays/main.go

+ 53 - 0
tags/array/medianOfTwoSortedArrays/main.go

@@ -0,0 +1,53 @@
+package main
+
+import "fmt"
+
+func main() {
+	var num1, num2 []int
+
+	num1 = []int{}
+	num2 = []int{}
+	fmt.Println(findMedianSortedArrays(num1, num2))
+
+	num1 = []int{1}
+	num2 = []int{}
+	fmt.Println(findMedianSortedArrays(num1, num2))
+
+	num1 = []int{1, 3}
+	num2 = []int{2}
+	fmt.Println(findMedianSortedArrays(num1, num2))
+
+	num1 = []int{1, 2}
+	num2 = []int{3, 4}
+	fmt.Println(findMedianSortedArrays(num1, num2))
+
+}
+
+func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {
+	var newNums []int
+	var indexN, indexM = 0, 0
+	for indexN <= len(nums1)-1 && indexM <= len(nums2)-1 {
+		if nums1[indexN] <= nums2[indexM] {
+			newNums = append(newNums, nums1[indexN])
+			indexN++
+		} else {
+			newNums = append(newNums, nums2[indexM])
+			indexM++
+		}
+	}
+	if indexN <= len(nums1)-1 {
+		newNums = append(newNums, nums1[indexN:]...)
+	}
+	if indexM <= len(nums2)-1 {
+		newNums = append(newNums, nums2[indexM:]...)
+	}
+
+	var length = len(newNums)
+	if length < 1 {
+		return float64(0)
+	}
+	if length%2 == 0 {
+		return float64(newNums[length/2-1]+newNums[length/2]) / 2
+	}
+	return float64(newNums[length/2])
+}