当前位置:   article > 正文

Golang | Leetcode Golang题解之第4题寻找两个正序数组的中位数

Golang | Leetcode Golang题解之第4题寻找两个正序数组的中位数

题目:

题解:

  1. func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {
  2. if len(nums1) > len(nums2) {
  3. return findMedianSortedArrays(nums2, nums1)
  4. }
  5. m, n := len(nums1), len(nums2)
  6. left, right := 0, m
  7. median1, median2 := 0, 0
  8. for left <= right {
  9. i := (left + right) / 2
  10. j := (m + n + 1) / 2 - i
  11. nums_im1 := math.MinInt32
  12. if i != 0 {
  13. nums_im1 = nums1[i-1]
  14. }
  15. nums_i := math.MaxInt32
  16. if i != m {
  17. nums_i = nums1[i]
  18. }
  19. nums_jm1 := math.MinInt32
  20. if j != 0 {
  21. nums_jm1 = nums2[j-1]
  22. }
  23. nums_j := math.MaxInt32
  24. if j != n {
  25. nums_j = nums2[j]
  26. }
  27. if nums_im1 <= nums_j {
  28. median1 = max(nums_im1, nums_jm1)
  29. median2 = min(nums_i, nums_j)
  30. left = i + 1
  31. } else {
  32. right = i - 1
  33. }
  34. }
  35. if (m + n) % 2 == 0 {
  36. return float64(median1 + median2) / 2.0
  37. }
  38. return float64(median1)
  39. }
  40. func max(x, y int) int {
  41. if x > y {
  42. return x
  43. }
  44. return y
  45. }
  46. func min(x, y int) int {
  47. if x < y {
  48. return x
  49. }
  50. return y
  51. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/895851
推荐阅读
相关标签
  

闽ICP备14008679号