Skip to content

Instantly share code, notes, and snippets.

@jianminchen
Created October 13, 2020 05:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jianminchen/c5720b3fe55ba5cf613ab180a36a4fa3 to your computer and use it in GitHub Desktop.
Save jianminchen/c5720b3fe55ba5cf613ab180a36a4fa3 to your computer and use it in GitHub Desktop.
Mock interview on Oct. 11, 2020 - merge two sorted array
/*
Your previous Plain Text content is preserved below:
Given 2 arrays sorted in ascending order, explain and implement an optimal algorithm to merge the arrays.
Example:
A = [1, 2, 3]
B = [4, 5, 6] and
Output = [1, 2, 3, 4, 5, 6]
[1, 2, 3] ->
-- - -
[4, 5, 6]
--
[1,2, 3, 4, 5, 6] -
*/
// O(N + M), N length of sorted1, M is length of second array
public int[] mergeArrays(int[] sorted1, int[] sorted2)
{
if(sorted1 == null || sorted2 == null)
return new int[0];
if(sorted1.Length == 0)
return sorted2;
if(sorted2.Length == 0)
return sorted1;
var start1 = 0;
var start2 = 0;
var length1 = sorted1.Length;
var length2 = sorted2.Length;
var merged = new int[length1 + length2]
int index = 0;
while(start1 < length1 || start2 < length2)
{
if(start1 >= length1)
{
merged[index++] = start2[start2];
start2++;
}
else if(strat2 >= length2)
{
merged[index++] = start2[start1];
start1++;
}
else
{
if(sorted[start1] > sorted2[start2])
{
merged[index++] = sorted2[start2++];
}
else
{
merged[index++] = sorted1[start1++];
}
}
//index++;
}
return merged;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment