4_寻找两个正序数组的中位数

简介: 4_寻找两个正序数组的中位数

4_寻找两个正序数组的中位数

 

package 数组;
import java.lang.reflect.Array;
import java.util.ArrayList;
/**
 * https://leetcode-cn.com/problems/median-of-two-sorted-arrays/
 * 
 * @author Huangyujun
 *
 */
public class _4_寻找两个正序数组的中位数 {
    public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
        // 重新再排序成一个新数组,然后找中间的
        int m = nums1.length;
        int n = nums2.length;
        int num1_len = m;
        int num2_len = n;
        ArrayList<Double> list = new ArrayList<>();
        int i = 0;
        int j = 0;
        while (m != 0 && n != 0) {
            if (nums1[i] < nums2[j]) {
                list.add((double) nums1[i++]);
                m--;
            } else {
                list.add((double) nums2[j++]);
                n--;
            }
        }
        int start1 = num1_len - m;
        while (m != 0) { // nums1 还有剩下的
            list.add((double) nums1[start1++]);
            m--;
        }
        int start2 = num2_len - n;
        while (n != 0) { // nums2 还有剩下的
            list.add((double) nums2[start2++]);
            n--;
        }
        if (list != null) {
            int len = list.size();
            if (len % 2 == 0) {
                int mid = len / 2;
                return (list.get(mid - 1).doubleValue() + list.get(mid).doubleValue()) / 2;
            } else {
                int mid = list.size() / 2;
                return list.get(mid).doubleValue();
            }
        }
        return -1;
    }
}
目录
相关文章
|
2月前
|
算法
正序数组中位数
给定两个有序数组nums1和nums2,要求找到它们合并后的中位数,时间复杂度需达到O(log(m+n))。通过双指针法遍历两个数组,使用left和right变量记录遍历过程中的值,最终根据合并后数组长度的奇偶性返回中位数。此方法有效避免了直接合并数组带来的高时间复杂度问题。
23 0
|
5月前
|
算法 Python
【面试题】寻找两个正序数组的中位数
【面试题】寻找两个正序数组的中位数
34 0
|
8月前
|
算法
【力扣】4. 寻找两个正序数组的中位数
【力扣】4. 寻找两个正序数组的中位数
|
8月前
|
存储 算法 Go
LeetCode第四题: 寻找两个正序数组的中位数
给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。
|
8月前
|
算法 C++
寻找两个正序数组的中位数(C++)
寻找两个正序数组的中位数(C++)
41 0
|
8月前
leetcode-4:寻找两个正序数组的中位数
leetcode-4:寻找两个正序数组的中位数
43 0
|
8月前
|
算法 安全 C#
Leetcode算法系列| 4. 寻找两个正序数组的中位数
Leetcode算法系列| 4. 寻找两个正序数组的中位数
|
8月前
|
算法
leetcode-寻找两个正序数组的中位数
leetcode-寻找两个正序数组的中位数
48 0
|
算法 测试技术 C++
C++算法:寻找两个正序数组的中位数
C++算法:寻找两个正序数组的中位数
寻找两个正序数组中的中位数
寻找两个正序数组中的中位数