4.寻找两个正序数组的中位数 (困难)

简介: 4.寻找两个正序数组的中位数 (困难)

1.移动指针

时间复杂度为O(m+n); //官方给出的二分查找方法的时间复杂度为O(log(m+n))

 public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int m = nums1.length;
        int n = nums2.length;
        int len = m+n;
        int left = -1, right = -1;
        int index_nums1 = 0, index_nums2 = 0;
        //len为奇数或偶数都需要遍历 len/2+1次
        for (int i = 0; i < (len/2 + 1); i++) {
            left = right; //left记录上次right的结果
            if (index_nums1 < m && (index_nums2>=n || nums1[index_nums1] < nums2[index_nums2])) {
                right  = nums1[index_nums1++];
            }else {
                right = nums2[index_nums2++];
            }
        }
        if (len %2 ==0)
            return (left+right) /2.0;
        else
            return  right;
 
    }
相关文章
|
2月前
|
算法
leetcode代码记录(寻找两个正序数组的中位数
leetcode代码记录(寻找两个正序数组的中位数
22 2
|
2月前
|
算法 C++
寻找两个正序数组的中位数(C++)
寻找两个正序数组的中位数(C++)
18 0
|
2月前
|
算法 安全 C#
Leetcode算法系列| 4. 寻找两个正序数组的中位数
Leetcode算法系列| 4. 寻找两个正序数组的中位数
|
9月前
|
算法 测试技术 C++
C++算法:寻找两个正序数组的中位数
C++算法:寻找两个正序数组的中位数
|
12月前
|
算法
寻找两个正序数组中的中位数
寻找两个正序数组中的中位数
|
Rust 自然语言处理 算法
【算法】4. 寻找两个正序数组的中位数(多语言实现)
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (m+n)) 。
【算法】4. 寻找两个正序数组的中位数(多语言实现)
|
Rust 算法 Java
寻找两个正序数组的中位数
寻找两个正序数组的中位数
113 0
|
算法
LeetCode 04寻找两个正序数组的中位数(困难)二分法
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。 请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。
98 0
LeetCode 04寻找两个正序数组的中位数(困难)二分法
再学一道算法题: 两个有序序列的中位数
再学一道算法题: 两个有序序列的中位数
再学一道算法题: 两个有序序列的中位数