intfindKSortedArraysIJ(vector<int>& nums1, vector<int>& nums2,int k) { int i = 0, j = 0; int m = nums1.size(); int n = nums2.size(); while (i + j < k) { if (i == m) { j++; } elseif (j == n) { i++; } elseif(nums1[i] <= nums2[j]) { i++; } else { j++; } }
intfindKSortedArraysBisection(vector<int>& nums1, vector<int>& nums2,int k) { int m = nums1.size(); int n = nums2.size(); int i = 0; int j = k - i; int iMin = 0, iMax = m; if (m == 0) { i = 0; j = k; } elseif (n == 0) { i = k; j = 0; } else { while (iMin <= iMax) { i = (iMin + iMax) / 2; j = k - i;
if (j < 0) { iMax = i - 1; continue; } elseif (j > n) { iMin = i + 1; continue; }
if (i == m) { if (nums1[i - 1] <= nums2[j]) { break; } else { iMax = i - 1; continue; } } elseif (i == 0) { if (nums1[i] >= nums2[j - 1]) { break; } else { iMin = i + 1; continue; } }
if (j == n) { if (nums1[i] >= nums2[j - 1]) { break; } else { iMin = i + 1; continue; } } elseif (j == 0) { if (nums1[i - 1] <= nums2[j]) { break; } else { iMax = i - 1; continue; } } if (nums1[i - 1] > nums2[j]) { iMax = i - 1; } elseif (nums1[i] < nums2[j - 1]) { iMin = i + 1; } else { break; } } }