力扣 题目4- 寻找两个正序数组的中位数
题目
题解
遍历(nums1size + nums2size) / 2 + 1次 nums1与nums2比较谁小取谁 放入vector
最后根据i与vector 容器的关系返回
我们实际上最多只需要最后遍历的两次 所以可以加入特殊判断 节省空间
代码

1 #include<iostream> 2 #include<vector> 3 using namespace std; 4 class Solution { 5 public: 6 double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { 7 int nums1size = nums1.size(); 8 int nums2size = nums2.size(); 9 int nums1foreach=0; 10 int nums2foreach = 0; 11 int i = 1; 12 int er = (nums1size+ nums2size)%2==0?1:0; 13 int zhongwei = (nums1size + nums2size) / 2 + 1; 14 int low = 0; 15 vector<int> zhong = {}; 16 for (; i <= zhongwei; i++) { 17 if (nums2foreach<nums2size&&(nums1foreach>= nums1size||nums1[nums1foreach]> nums2[nums2foreach])) { 18 low = nums2[nums2foreach]; 19 nums2foreach++; 20 } 21 else 22 { 23 low = nums1[nums1foreach]; 24 nums1foreach++; 25 } 26 27 if (i== zhongwei-1|| i == zhongwei) { 28 zhong.push_back(low); 29 } 30 } 31 return er? (zhong[0]+ zhong[1])/2.0: zhong.back()*1.0; 32 } 33 }; 34 35 int main() { 36 Solution sol; 37 vector<int> nums1 = {1,2}; 38 vector<int> nums2 = {}; 39 double result =sol.findMedianSortedArrays(nums1, nums2); 40 cout << result << endl; 41 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理