1、将两个有序数组合并为一个有序数组
int[] MergeArray(int[] arrayX, int[] arrayY)
{
int arrayXCount = arrayX.Count;
int arrayYCount = arrayY.Count;
int totalCount = arrayXCount + arrayYCount;
int[] mergedArray = new int[totalCount];
int i=0,j=0;
while((i!=arrayXCount)&&(j!=arrayYCount))
{
if(arrayX[i] <= arrayY[j])
{
mergedArray[i+j] = arrayX[i];
i++;
}
else
{
mergedArray[i+j] = arrayY[j];
j++;
}
}
}
2、找出两个排好序的数组中的不同数据,要求最优算法
List<int> MergeArray(int[] arrayX, int[] arrayY)
{
int arrayXCount = arrayX.Count;
int arrayYCount = arrayY.Count;
int i=0,j=0;
List<int> resultArray = new List<int>();
while((i!=arrayXCount)&&(j!=arrayYCount))
{
if(arrayX[i] < arrayY[j])
{
resultArray.Add(arrayX[i]);
i++;
}
else if (arrayX[i] > arrayY[j])
{
resultArray.Add(arrayY[j]);
j++;
}
else
{
i++;
j++;
}
}
return resultArray;
}
3、 两个有序数组A,B,查出只在a中有的数。 要求时间复杂度为 O(m+n);
List<int> GetUniqueArrayA(int[] arrayX, int[] arrayY)
{
int arrayXCount = arrayX.Count;
int arrayYCount = arrayY.Count;
int i=0,j=0;
List<int> resultArray = new List<int>();
while((i!=arrayXCount)&&(j!=arrayYCount))
{
if(arrayX[i] < arrayY[j])
{
resultArray.Add(arrayX[i]);
i++;
}
else if (arrayX[i] > arrayY[j])
{
j++;
}
else
{
i++;
j++;
}
}
return resultArray;
}
评论