I am getting this error in a leetcode question. To find the median of two sorted arrays. The code is completely working fine in compiler in my PC but showing this error in leetcode.
One thing I noticed is that it is showing error when I used (double) to convert integer value to double in Median variable.
CODE:
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
vector<int> v1;
int n = nums1.size();
int m = nums2.size();
int mid = (n+m-1)/2;
double median;
int ptr = 0;
int i=0,j=0;
while(i<n && j<m && ptr<=mid+1)
{
if(nums1[i]<=nums2[j])
{
v1.push_back(nums1[i]);
i++;
}
else
{
v1.push_back(nums2[j]);
j++;
}
ptr++;
}
while(ptr <= mid+1 && i<n)
{
v1.push_back(nums1[i]);
i++;
ptr++;
}
while(ptr <= mid+1 && j<m)
{
v1.push_back(nums2[j]);
j++;
ptr++;
}
if((n+m)%2==0)//even
{
median = (double)(v1[v1.size()-1]+v1[v1.size()-2])/(double)2;//this error was showing when I used (double) for conversion.
}
else //odd
{
median = v1[v1.size()-2];
}
return median;
}
};
Code I run in my PC (which is working fine)
#include<bits/stdc++.h>
using namespace std;
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
vector<int> v1;
int n = nums1.size();
int m = nums2.size();
int mid = (n+m-1)/2;
double median;
int ptr = 0;
int i=0,j=0;
while(i<n && j<m && ptr<=mid+1)
{
if(nums1[i]<=nums2[j])
{
v1.push_back(nums1[i]);
i++;
}
else
{
v1.push_back(nums2[j]);
j++;
}
ptr++;
}
while(ptr <= mid+1 && i<n)
{
v1.push_back(nums1[i]);
i++;
ptr++;
}
while(ptr <= mid+1 && j<m)
{
v1.push_back(nums2[j]);
j++;
ptr++;
}
if((n+m)%2==0)//even
{
median = (double)(v1[v1.size()-1]+v1[v1.size()-2])/(double)2;
}
else //odd
{
median = v1[v1.size()-2];
}
return median;
}
};
int main()
{
Solution obj;
vector<int> v1 {1,2,3,11};
vector<int> v2 = {4,5,6,11};
vector<int> v3 = {4,5};
double median = obj.findMedianSortedArrays(v1,v3);
cout<<median;
}