leetcode4-兩個排序陣列的中位數
自己是用陣列寫的,程式碼如下:
int n1=nums1.size();
int n2=nums2.size();
int n=n1+n2;
int *pn=new int[n];
double dResult;
for (int i=0;i<n1;i++)
{
pn[i]=nums1[i];
}
for (int i=0;i<n2;i++)
{
pn[i+n1]=nums2[i];
}
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
if (pn[i]<pn[j])
{
int temp=pn[i];
pn[i]=pn[j];
pn[j]=temp;
}
}
}
if ((n%2))
{
dResult=pn[n/2];
return dResult;
}
else
{
dResult=(double)(pn[n/2]+pn[n/2-1])/2;
return dResult;
}
陣列佔用記憶體較大,檢視佔用記憶體小的容器的方法,程式碼如下:
vector<int>nums;
int i=0,j=0;
while((i<nums1.size())&&j<nums2.size())
{
if (nums1[i]<nums2[j])
{
nums.push_back(nums1[i]);
i++;
}
else
{
nums.push_back(nums2[j]);
j++;
}
if (i==nums1.size())
{
while(j<nums2.size()){nums.push_back(nums2[j]);j++;}
}
else if (j==nums2.size())
{
while(i<nums1.size()){nums.push_back(nums1[i]);i++;}
}
if (nums.size()%2)
{
return nums[nums.size()/2];
}
else
{
return (double)(nums[nums.size()/2]+nums[nums.size()/2-1])/2;
}
}