forked from go/golangs_learn
viviman
3 years ago
5 changed files with 138 additions and 31 deletions
@ -1,13 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import "fmt" |
|
||||
|
|
||||
func main() { |
|
||||
fmt.Println("Boyer-Moore算法 开始...") |
|
||||
|
|
||||
fmt.Println('a') |
|
||||
fmt.Println('A') |
|
||||
fmt.Println('Z') |
|
||||
fmt.Println(string(17)) |
|
||||
fmt.Println(91) |
|
||||
} |
|
@ -1,17 +0,0 @@ |
|||||
package main |
|
||||
|
|
||||
import "fmt" |
|
||||
|
|
||||
/** |
|
||||
KMP算法中每一次的匹配, |
|
||||
|
|
||||
1、主串的起始位置 = 上一轮匹配的失配位置; |
|
||||
2、模式串的起始位置 = 重复字符结构的下一位字符(无重复字符结构,则模式串的首字符) |
|
||||
*/ |
|
||||
func main() { |
|
||||
fmt.Println("KMP算法 开始...") |
|
||||
strA := "ababcabcacbab" |
|
||||
strB := "abcac" |
|
||||
fmt.Println(strB, strA) |
|
||||
|
|
||||
} |
|
@ -0,0 +1,69 @@ |
|||||
|
package main |
||||
|
|
||||
|
import ( |
||||
|
"log" |
||||
|
"sort" |
||||
|
) |
||||
|
|
||||
|
/* |
||||
|
* 4. 寻找两个正序数组的中位数 |
||||
|
* 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 |
||||
|
* |
||||
|
* 示例 1: |
||||
|
* 输入:nums1 = [1,3], nums2 = [2] |
||||
|
* 输出:2.00000 |
||||
|
* 解释:合并数组 = [1,2,3] ,中位数 2 |
||||
|
* |
||||
|
* 示例 2: |
||||
|
* 输入:nums1 = [1,2], nums2 = [3,4] |
||||
|
* 输出:2.50000 |
||||
|
* 解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5 |
||||
|
* |
||||
|
* 示例 3: |
||||
|
* 输入:nums1 = [0,0], nums2 = [0,0] |
||||
|
* 输出:0.00000 |
||||
|
* |
||||
|
* 示例 4: |
||||
|
* 输入:nums1 = [], nums2 = [1] |
||||
|
* 输出:1.00000 |
||||
|
* |
||||
|
* 示例 5: |
||||
|
* 输入:nums1 = [2], nums2 = [] |
||||
|
* 输出:2.00000 |
||||
|
* |
||||
|
* |
||||
|
* 提示: |
||||
|
* nums1.length == m |
||||
|
* nums2.length == n |
||||
|
* 0 <= m <= 1000 |
||||
|
* 0 <= n <= 1000 |
||||
|
* 1 <= m + n <= 2000 |
||||
|
* -106 <= nums1[i], nums2[i] <= 106 |
||||
|
* |
||||
|
*/ |
||||
|
func main() { |
||||
|
nums1a, nums2a := []int{1, 3}, []int{2} |
||||
|
nums1b, nums2b := []int{1, 2}, []int{3, 4} |
||||
|
nums1c, nums2c := []int{0, 0}, []int{0, 0} |
||||
|
nums1d, nums2d := []int{}, []int{1} |
||||
|
nums1e, nums2e := []int{2}, []int{} |
||||
|
|
||||
|
log.Println(findMedianSortedArrays(nums1a, nums2a)) |
||||
|
log.Println(findMedianSortedArrays(nums1b, nums2b)) |
||||
|
log.Println(findMedianSortedArrays(nums1c, nums2c)) |
||||
|
log.Println(findMedianSortedArrays(nums1d, nums2d)) |
||||
|
log.Println(findMedianSortedArrays(nums1e, nums2e)) |
||||
|
} |
||||
|
|
||||
|
func findMedianSortedArrays(nums1, nums2 []int) float64 { |
||||
|
retLen := len(nums1) + len(nums2) |
||||
|
nums1 = append(nums1, nums2...) |
||||
|
sort.Ints(nums1) |
||||
|
|
||||
|
length := retLen / 2 |
||||
|
if retLen%2 == 0 { |
||||
|
return float64(nums1[length-1]+nums1[length]) / 2.0 |
||||
|
} else { |
||||
|
return float64(nums1[length]) |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue