4.寻找两个正序数组的中位数 (困难)
  TEZNKK3IfmPf 2023年11月15日 30 0

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;

    }

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   22天前   34   0   0 C++
  TEZNKK3IfmPf   22天前   24   0   0 指针C++
  TEZNKK3IfmPf   2024年05月31日   23   0   0 算法C++