leetcode4求中位数

2024-06-19 13:55:58 浏览数 (1)

LC4

给定两个大小分别为 mn 的正序(从小到大)数组 nums1nums2。请你找出并返回这两个正序数组的 中位数

算法的时间复杂度应该为 O(log (m n))

代码语言:javascript复制
 class Solution {
 public:
     double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
         int m = nums1.size(), n = nums2.size(), k = 0, i = 0, j = 0;//把重复使用的数据用一个变量代替
         vector<int> sub(m   n, 0);
         while (i < m && j < n)//将小数放在前面,大数放在后面
             sub[k  ] = nums1[i] < nums2[j] ? nums1[i  ] : nums2[j  ];
         while (i < m) sub[k  ] = nums1[i  ];//相当于sub[k]=nums1[1],k  ,i  ;
         while (j < n) sub[k  ] = nums2[j  ];//同理
         return k % 2 ? sub[k / 2] : (sub[k / 2]   sub[k / 2 - 1]) / 2.0; // 判断奇偶
     }
 };//要会用a[i  ]-->>a[i],i  ;

0 人点赞