A Leetcode problem involving Binary Search.
Problem
https://leetcode.com/problems/median-of-two-sorted-arrays/
Soln
#include "leetcodeutils.hpp"
using namespace std;
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
vector<double> newarray;
int midindex = (nums1.size()+nums2.size())/2;
int parity = (nums1.size()+nums2.size()) % 2;
double prev = 0;
int left = 0;
int right = 0;
while (left < nums1.size() & right < nums2.size()){
if (nums1[left] < nums2[right]){
if (left+right == midindex & parity == 1) return nums1[left];
if (left+right == midindex-1 & parity == 0) prev = nums1[left];
if (left+right == midindex & parity == 0) return (nums1[left] + prev) / 2;
newarray.push_back(nums1[left++]);
}
else{
if (left+right == midindex & parity == 1) return nums2[right];
if (left+right == midindex-1 & parity == 0) prev = nums2[right];
if (left+right == midindex & parity == 0) return (nums2[right] + prev) / 2;
newarray.push_back(nums2[right++]);
}
}
while (left < nums1.size()){
if (left+right == midindex & parity == 1) return nums1[left];
if (left+right == midindex-1 & parity == 0) prev = nums1[left];
if (left+right == midindex & parity == 0) return (nums1[left] + prev) / 2;
newarray.push_back(nums1[left++]);
}
while (right < nums2.size()){
if (left+right == midindex & parity == 1) return nums2[right];
if (left+right == midindex-1 & parity == 0) prev = nums2[right];
if (left+right == midindex & parity == 0) return (nums2[right] + prev) / 2;
newarray.push_back(nums2[right++]);
}
return 0;
}
int main(){
vector<int> left = {1,2};
vector<int> right = {3,4};
double res = findMedianSortedArrays(left, right);
cout << res;
}