From 1610db5ede7db313780ad65c4aae197e990cfa41 Mon Sep 17 00:00:00 2001 From: carry Date: Tue, 11 Feb 2025 22:59:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=AF=BB=E6=89=BE=E4=B8=A4?= =?UTF-8?q?=E4=B8=AA=E6=AD=A3=E5=BA=8F=E6=95=B0=E7=BB=84=E7=9A=84=E4=B8=AD?= =?UTF-8?q?=E4=BD=8D=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- findMedianSortedArrays.cpp | 87 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 findMedianSortedArrays.cpp diff --git a/findMedianSortedArrays.cpp b/findMedianSortedArrays.cpp new file mode 100644 index 0000000..86fadf9 --- /dev/null +++ b/findMedianSortedArrays.cpp @@ -0,0 +1,87 @@ +#include +#include +#include + +using namespace std; + +class Solution +{ +public: + double findMedianSortedArrays(vector &nums1,vector &nums2) + { + int lenth = nums1.size() + nums2.size(); + if(nums1.size() == 0){ + nums1.push_back(pow(10,6) + 1); + } + if(nums2.size() == 0){ + nums2.push_back(pow(10,6) + 1); + } + int a = 0, b = 0; + if (lenth % 2 == 1) { + lenth = lenth / 2; + for (int i = 0; i < lenth; i++) { + if (nums1[a] < nums2[b]) { + if(a == nums1.size() -1){ + nums1[a] = pow(10,6) + 1; + } + else{ + a++; + } + } else { + if(b == nums2.size() -1){ + nums2[b] = pow(10,6) + 1; + } + else{ + b++; + } + } + } + return nums1[a] < nums2[b] ? nums1[a] : nums2[b]; + } else { + int n[2] = {0,0}; + int sw = 0; + lenth = lenth / 2 + 1; + for (int i = 0; i < lenth; i++) { + if (nums1[a] < nums2[b]) { + n[sw] = nums1[a]; + sw = !sw; + if(a == nums1.size() -1){ + nums1[a] = pow(10,6) + 1; + } + else{ + a++; + } + } else { + n[sw] = nums2[b]; + sw = !sw; + if(b == nums2.size() -1){ + nums2[b] = pow(10,6) + 1; + } + else{ + b++; + } + } + } + return (double(n[0]) + double(n[1]))/2; + } + } +}; + +int main() { + // 示例测试用例 + vector nums1 = {1, 3}; + vector nums2 = {2}; + + Solution solution; + double median = solution.findMedianSortedArrays(nums1, nums2); + + cout << "中位数是: " << median << endl; + + // 更多测试用例 + vector nums3 = {100000}; + vector nums4 = {100001}; + double median2 = solution.findMedianSortedArrays(nums3, nums4); + cout << "中位数是: " << median2 << endl; + + return 0; +} \ No newline at end of file