zoukankan      html  css  js  c++  java
  • 题目:两个排序数组的中位数(C++)

    纪念一下,这个是我第一次提交的程序就超过了百分之百的提交记录

    程序如下:

    static const auto io_speed_up = []()
    {
        std::ios::sync_with_stdio(false);
        cin.tie(nullptr);
        return 0;
    }();
    
    class Solution {
    public:
        double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
            int preNum      = 0;
            int nowNum      = 0;
            size_t nums1Idx = 0;
            size_t nums2Idx = 0;
            size_t length   = nums1.size( ) + nums2.size( );
            size_t index    = length / 2;
            for (size_t i = 0; i <= index; ++i)
            {
                if (nums2Idx >= nums2.size( ) || (nums1Idx < nums1.size( ) && nums1[nums1Idx] < nums2[nums2Idx]))
                {
                    preNum = nowNum;
                    nowNum = nums1[nums1Idx];
                    ++nums1Idx;
                }
                else
                {
                    preNum = nowNum;
                    nowNum = nums2[nums2Idx];
                    ++nums2Idx;
                }
            }
            if (length % 2)
                return nowNum;
            else
                return (double)(nowNum + preNum) / 2;
        }
    };

    观察了网站上的最优解法,发现是使用merge函数进行数组合并,考虑到merge数组合并的时候需要申请新的空间,所以merga中使用的方法应该比我的方法快一点。但是查看了merge的源码时并没有发现更优的地方(可能存在但是我看不出来?),所以我觉得是不是对merge函数进行了汇编级优化。得出结论,有时候充分利用stl库不仅省事而且快。

    最后很奇怪的是网站上最优解和第二优解代码是一样的。喵喵喵?

  • 相关阅读:
    loadrunner基础学习笔记五-场景
    loadrunner基础学习笔记四
    loadrunner基础学习笔记三
    loadrunner基础学习笔记二
    loadrunner 基础-学习笔记一
    jmeter创建基本的FTP测试计划
    简单FTP服务器搭建
    Vitya and Strange Lesson CodeForces
    Ancient Printer HDU
    ZYB loves Xor I HDU
  • 原文地址:https://www.cnblogs.com/change4587/p/9146835.html
Copyright © 2011-2022 走看看