problemscpp
A collection of my answers to algorithm problems in c++.
静态 Public 成员函数 | 所有成员列表
leetcode::median_of_two_sorted_arrays::Solution类 参考

#include <leetcode.h>

静态 Public 成员函数

static double findMedianSortedArrays (vector< int > &nums1, vector< int > &nums2)
 

详细描述

在文件 leetcode.h3024 行定义.

成员函数说明

◆ findMedianSortedArrays()

double leetcode::median_of_two_sorted_arrays::Solution::findMedianSortedArrays ( vector< int > &  nums1,
vector< int > &  nums2 
)
static

在文件 leetcode.cpp8544 行定义.

8544 {
8545 if(nums1.size() > nums2.size()) {
8546 return findMedianSortedArrays(nums2, nums1);
8547 }
8548
8549 const int m = nums1.size();
8550 const int n = nums2.size();
8551 int left = 0, right = m;
8552 // median1:前一部分的最大值
8553 // median2:后一部分的最小值
8554 int median1 = 0, median2 = 0;
8555
8556 while(left <= right) {
8557 // 前一部分包含 nums1[0 .. i-1] 和 nums2[0 .. j-1]
8558 // 后一部分包含 nums1[i .. m-1] 和 nums2[j .. n-1]
8559 const int i = (left + right) / 2;
8560 const int j = (m + n + 1) / 2 - i;
8561
8562 // nums_im1, nums_i, nums_jm1, nums_j 分别表示 nums1[i-1], nums1[i], nums2[j-1], nums2[j]
8563 int nums_im1 = i == 0 ? INT_MIN : nums1[i - 1];
8564 int nums_i = i == m ? INT_MAX : nums1[i];
8565 int nums_jm1 = j == 0 ? INT_MIN : nums2[j - 1];
8566 int nums_j = j == n ? INT_MAX : nums2[j];
8567
8568 if(nums_im1 <= nums_j) {
8569 median1 = max(nums_im1, nums_jm1);
8570 median2 = min(nums_i, nums_j);
8571 left = i + 1;
8572 } else {
8573 right = i - 1;
8574 }
8575 }
8576
8577 return (m + n) % 2 == 0 ? (median1 + median2) / 2.0 : median1;
8578 }
static double findMedianSortedArrays(vector< int > &nums1, vector< int > &nums2)
Definition: leetcode.cpp:8544

引用了 findMedianSortedArrays(), acwing::acwing1929::left , 以及 acwing::acwing1929::right.

被这些函数引用 findMedianSortedArrays() , 以及 leetcode::median_of_two_sorted_arrays::TEST().


该类的文档由以下文件生成: