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;
 
    }
相关文章
|
6月前
|
算法 测试技术 C++
【动态规划】【前缀和】【数学】2338. 统计理想数组的数目
【动态规划】【前缀和】【数学】2338. 统计理想数组的数目
|
3月前
|
算法 Python
【面试题】寻找两个正序数组的中位数
【面试题】寻找两个正序数组的中位数
30 0
|
6月前
|
算法
leetcode代码记录(寻找两个正序数组的中位数
leetcode代码记录(寻找两个正序数组的中位数
44 2
|
6月前
|
算法 C++
寻找两个正序数组的中位数(C++)
寻找两个正序数组的中位数(C++)
32 0
|
6月前
|
算法 安全 C#
Leetcode算法系列| 4. 寻找两个正序数组的中位数
Leetcode算法系列| 4. 寻找两个正序数组的中位数
|
6月前
|
存储 算法 程序员
【算法训练-数组 一】【数组子集】:最长无重复子数组
【算法训练-数组 一】【数组子集】:最长无重复子数组
43 0
|
算法 测试技术 C++
C++算法:寻找两个正序数组的中位数
C++算法:寻找两个正序数组的中位数
寻找两个正序数组中的中位数
寻找两个正序数组中的中位数
|
Rust 自然语言处理 算法
【算法】4. 寻找两个正序数组的中位数(多语言实现)
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (m+n)) 。
【算法】4. 寻找两个正序数组的中位数(多语言实现)
|
Rust 算法 Java
寻找两个正序数组的中位数
寻找两个正序数组的中位数
129 0