当前位置: 首页 > news >正文

力扣第4题 寻找两个正序数组的中位数

力扣第4题

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

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

示例 1:

输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2

示例 2:

输入:nums1 = [1,2], nums2 = [3,4]
输出:2.50000
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5

提示:

  • nums1.length == m
  • nums2.length == n
  • 0 <= m <= 1000
  • 0 <= n <= 1000
  • 1 <= m + n <= 2000
  • -106 <= nums1[i], nums2[i] <= 106
class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        // 定义i j 两个指针来分别指针2个数组 
        // 定义 l  r 分别来保存中位数 ,奇数个只会用到l ,偶数个l , r都会运用到
        int m = nums1.size();
        int n = nums2.size();
        int i = 0 , j = 0 , l = 0 , r = 0 ;
        for(int x = 0 ; x <= ( m + n ) / 2 ; ++x) {
            l = r ;
            r = (i < m && (j >= n || nums1[i] <nums2[j])) ? nums1[i++] : nums2[j++] ;
        }
        return (m + n) & 1 ? r : (l + r) / 2.0; 
    }
};

相关文章:

  • 排序与算法:归并排序
  • V8 如何进行内存监控和调试
  • 基于SpringBoot的儿童性教育网站(源码+数据库)
  • startai产品精修教程
  • Webpack,Vite打包的理解
  • 主机的基本构成
  • Linux(Ubuntu24.04)源码编译安装OpenCV4.6.0
  • redis的应用,缓存,分布式锁
  • C语言——深入理解指针(2)(数组与指针)
  • 第三天面试题
  • 迅速闭合抽气止回阀的安装、维护及使用要点-耀圣
  • llama3 微调教程之 llama factory 的 安装部署与模型微调过程,模型量化和gguf转换。
  • Java Web开发实战与项目——Spring Security与权限管理实现
  • Pycharm中断点使用技巧
  • JavaAPI(字符串 正则表达式)
  • Java基础专项复习5——异常
  • 全局动态组件uniapp(vue)
  • ubuntu22.04离线安装nginx
  • 用promptfoo做大模型安全性测评
  • P8598 [蓝桥杯 2013 省 AB] 错误票据
  • 佩斯科夫:俄方代表团15日将在伊斯坦布尔等候乌克兰代表团
  • 第十届影像上海博览会落幕后,留给中国摄影收藏的三个问题
  • 马上评丨岂能为流量拿自己的生命开玩笑
  • 书法需从字外看,书法家、学者吴本清辞世
  • 18世纪“精于剪切、复制、粘贴”的美国新闻界
  • 在地球另一端的交流,架起2万公里间更多共赢的桥梁