LeetCode:68.寻找两个正序数组的中位数

目录

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


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

cpp 复制代码
class Solution {
public:
    int getMinKth(vector<int>& nums1, vector<int>& nums2, int k)
    {
        int m = nums1.size(), n = nums2.size();
        int index1 = 0, index2 = 0;

        while(true)
        {
            if(index1 == m) return nums2[index2 + k - 1];
            if(index2 == n) return nums1[index1 + k - 1];
            if(k == 1) return min(nums1[index1], nums2[index2]);

            int newIndex1 = min(index1 + k / 2 - 1, m - 1);
            int newIndex2 = min(index2 + k / 2 - 1, n - 1);
            int sum1 = nums1[newIndex1];
            int sum2 = nums2[newIndex2];

            if(sum1 <= sum2)
            {
                k -= newIndex1 - index1 + 1;
                index1 = newIndex1 + 1;
            }
            else
            {
                k -= newIndex2 - index2 + 1;
                index2 = newIndex2 + 1;
            }
        }
    }

    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) 
    {
        int length = nums1.size() + nums2.size();
        if(length % 2 == 1)
            return getMinKth(nums1, nums2, (length + 1) / 2);
        else
            return (getMinKth(nums1, nums2, length / 2) + getMinKth(nums1, nums2, length / 2 + 1)) / 2.0;
    }
};
相关推荐
沐浴露z10 小时前
【JVM】详解 垃圾回收
java·jvm·算法
代码欢乐豆11 小时前
编译原理机测客观题(7)优化和代码生成练习题
数据结构·算法·编译原理
Scc_hy12 小时前
强化学习_Paper_2000_Eligibility Traces for Off-Policy Policy Evaluation
人工智能·深度学习·算法·强化学习·rl
leke200312 小时前
2025年10月17日
算法
CoovallyAIHub12 小时前
Mamba-3震撼登场!Transformer最强挑战者再进化,已进入ICLR 2026盲审
深度学习·算法·计算机视觉
Aqua Cheng.13 小时前
代码随想录第七天|哈希表part02--454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
java·数据结构·算法·散列表
怀揣小梦想13 小时前
跟着Carl学算法--哈希表
数据结构·c++·笔记·算法·哈希算法·散列表
Nebula_g13 小时前
Java哈希表入门详解(Hash)
java·开发语言·学习·算法·哈希算法·初学者
Kent_J_Truman13 小时前
【模拟散列表】
数据结构·算法·蓝桥杯·散列表·常识类
Lchiyu13 小时前
哈希表 | 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和
算法