This commit is contained in:
2026-07-23 16:56:50 +08:00
parent 124ad9afdf
commit 92784ffb0f
36 changed files with 2015 additions and 608 deletions
+27 -24
View File
@@ -5,36 +5,39 @@ import (
"testing"
)
// https://leetcode.cn/problems/median-of-two-sorted-arrays/?envType=study-plan-v2&envId=top-100-liked
// https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/?envType=study-plan-v2&envId=top-100-liked
func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {
total := len(nums1) + len(nums2)
mid := total / 2
needAvg := total%2 == 0
c1, c2 := 0, 0
prev, cur := 0, 0
for i := 0; i <= mid; i++ {
prev = cur
if c1 < len(nums1) && (c2 >= len(nums2) || nums1[c1] <= nums2[c2]) {
cur = nums1[c1]
c1++
func findMin(nums []int) int {
if len(nums) == 1 {
return nums[0]
}
if nums[0] < nums[len(nums)-1] {
return nums[0]
}
start := 0
end := len(nums) - 1
for start <= end {
mid := start + (end-start)/2
if mid >= 1 && nums[mid-1] > nums[mid] && mid < len(nums)-1 && nums[mid] < nums[mid+1] {
return nums[mid]
}
if nums[mid] > nums[end] {
// 最小值在右侧
start = mid + 1
} else {
cur = nums2[c2]
c2++
// 最小值在左侧
end = mid - 1
}
}
if needAvg {
return float64(prev+cur) / 2
if nums[start] > nums[end] {
return nums[end]
}
return float64(cur)
return nums[start]
}
func Test(t *testing.T) {
// fmt.Println(findMedianSortedArrays([]int{1, 3}, []int{2}))
// fmt.Println(findMedianSortedArrays([]int{1, 2}, []int{3, 4}))
// fmt.Println(findMedianSortedArrays([]int{}, []int{1}))
// fmt.Println(findMedianSortedArrays([]int{}, []int{2, 3}))
// fmt.Println(findMedianSortedArrays([]int{1, 2, 3, 4, 5}, []int{6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}))
// fmt.Println(findMedianSortedArrays([]int{1, 2}, []int{-1, 3}))
fmt.Println(findMedianSortedArrays([]int{2, 2, 2, 2}, []int{2, 2, 2}))
// fmt.Println(findMin([]int{3, 4, 5, 1, 2}))
// fmt.Println(findMin([]int{3, 1, 2}))
fmt.Println(findMin([]int{2, 1}))
}