纪念一下,这个是我第一次提交的程序就超过了百分之百的提交记录
程序如下:
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库不仅省事而且快。
最后很奇怪的是网站上最优解和第二优解代码是一样的。喵喵喵?