Runtime Error Message: Line 1034: Char 34: runtime error: addition of unsigned offset

Viewed 16

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;
}

0 Answers
Related