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

【算法day3】寻找两个正序数组的中位数

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

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

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

https://leetcode.cn/problems/median-of-two-sorted-arrays/description/

在这里插入图片描述

class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        int mid = (nums1.size() + nums2.size()) / 2 - 1;
        int odds = (nums1.size() + nums2.size()) % 2;
        int mid_num1 = 0, mid_num2 = 0;

        int i = 0, j = 0, k = 0;
        // 偶数取均值,奇数取中间那个值
        while (i < nums1.size() && j < nums2.size() && k <= mid) {
            if (nums1[i] < nums2[j]) {
                mid_num1 = nums1[i];
                i++;
            } else {
                mid_num1 = nums2[j];
                j++;
            }
            k++;
        }
        while (i < nums1.size() && k <= mid) {
            mid_num1 = nums1[i];
            i++;
            k++;
        }
        while (j < nums2.size() && k <= mid) {
            mid_num1 = nums2[j];
            j++;
            k++;
        }
        if (i < nums1.size() && j < nums2.size()) {
            if (nums1[i] < nums2[j]) {
                mid_num2 = nums1[i];
            } else {
                mid_num2 = nums2[j];
            }
        } else if (i < nums1.size()) {
            mid_num2 = nums1[i];
        } else if (j < nums2.size()) {
            mid_num2 = nums2[j];
        }
        if (odds % 2 == 0) {
            float result = mid_num1 + mid_num2;
            return result / 2;
        } else {
            return mid_num2;
        }
    }
};

http://www.kler.cn/a/580638.html

相关文章:

  • 精选一百道备赛蓝桥杯——2.K倍区间
  • 解释 TypeScript 中的类型系统,如何定义和使用类型?
  • Go语言中位清除运算符的应用场景
  • Linux 内核自定义协议族开发:从 “No buffer space available“ 错误到解决方案
  • php虚拟站点提示No input file specified时的问题及权限处理方法
  • P8662 [蓝桥杯 2018 省 AB] 全球变暖--DFS
  • 【洛谷DFS算法】P1123取数游戏
  • 09 HarmonyOS NEXT 仿uv-ui Tag组件开发教程系列(三)
  • React基础之项目创建
  • 在线json转ArkTs-Harmonyos
  • C 语言数据结构(二):顺序表和链表
  • 项目管理工具 Maven
  • docker学习使用教程
  • 航空发动机叶片检测-三维扫描技术重构精密制造质量体系
  • MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)
  • 游戏行业研究系列报告
  • k8s面试题总结(十二)
  • 在mac中设置环境变量
  • 【AIGC系列】6:HunyuanVideo视频生成模型部署和代码分析
  • STM32 CAN模块原理与应用详解