• leetcode刷题四<寻找两个有序数组的中位数>


    给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
    
    请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
    
    你可以假设 nums1 和 nums2 不会同时为空。
    
    示例 1:
    
    nums1 = [1, 3]
    nums2 = [2]
    
    则中位数是 2.0
    示例 2:
    
    nums1 = [1, 2]
    nums2 = [3, 4]
    
    则中位数是 (2 + 3)/2 = 2.5

    思路简单直接撸代码吧

    double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
        
        int numsSize=nums1Size+nums2Size;
        int *nums=malloc(numsSize*sizeof(int));
        int *numsTemp=nums;
        int *numsEnd=nums+numsSize;
        int *nums1End=nums1+nums1Size;
        int *nums2End=nums2+nums2Size;
        double dest=0.0;
        while(numsTemp<numsEnd)
        {
            if(nums1<nums1End&&nums2<nums2End)
            {
                if(*nums1<*nums2)
                { *numsTemp++=*nums1++;}
                else
                {*numsTemp++=*nums2++;}
            }
            else
            {if(nums1<nums1End)
            {*numsTemp++=*nums1++;}
             else if(nums2<nums2End)
             {*numsTemp++=*nums2++;}
             }   
            
        }
        if(numsSize%2==0)
        { dest=(double)(nums[numsSize/2-1]+nums[numsSize/2])*1.0/2;}
        else
        {dest=(double)nums[(numsSize-1)/2];}
        return dest;
    }
  • 相关阅读:
    WBS分析
    需求分析-NABCD
    电梯演讲--2048小游戏
    Git diff 算法
    2020 北京理工大学889 回忆
    抖音后台开发社招面试
    珍宝阁
    2018 北京理工大学复试上机 回忆版
    2018 北京理工大学889 回忆
    做一个博客
  • 原文地址:https://www.cnblogs.com/kk328/p/10459306.html
Copyright © 2020-2023  润新知