Facebook Interview Question: Write a function that takes i... | Glassdoor

## Interview Question

Data Scientist Interview Menlo Park, CA

# Write a function that takes in two sorted lists and outputs

a sorted list that is their union.
Tags:
sql, product, science, analytics, python, data

1

f(a,b) { return sort(unique(a,b)) }

Anonymous on Jun 14, 2013
0

def sortedUnion(list1,list2):
list3 = [x for x in list1 if x in list2]
return sorted(list(set(list3)))

Anonymous on Sep 6, 2013
0

Anonymous on Nov 13, 2013
3

write 2 helpers: 1) INSERT(A, b) = put element b within A in the sort order
2) DEL(A, a) = delete element a from A

Then do this recursion:
f(A,B) : if max(A) &lt;= min(B) return [A B]
else { B = INSERT(B, max(a));
A = DEL(A, max(a);
f(A,B);
}

something like that. try coding and testing. I haven't.

TheProf on Aug 9, 2014
0

Oops, check/write a termination condition

TheProf on Aug 9, 2014
0

On Python, you could do:

from sets import Set

def merge_sort(a,b):
return sorted( Set(a).union(Set(b)) )

wp on Sep 26, 2014
0

def sorted_union(list1, list2):
union=set(list1).union(set(list2))
sorted_union=sorted(list(union))
return sorted_union

JC on Jun 10, 2015
2

Second part of merge sort. Don't answer with sort(a), etc. Anyone can do that...

def merge(A, B):
i=0
j=0
sorted_list = []

while i &lt; len(A) and j &lt; len(B):
if A[i] &lt;= B[j]:
sorted_list.append(A[i])
i += 1
else:
sorted_list.append(B[j])
j += 1

if i &lt; len(A):
sorted_list.extend(A[i:])
elif j &lt; len(B):
sorted_list.extend(B[j:])

return sorted_list

Anonymous on Jul 30, 2016
0

I assumed that we can not use any &quot;sort&quot; function and we want it with linear time.

so here it is:

def my_sort(list_a, list_b):
if len(list_a) ==0:
return list_b
elif len(list_b) ==0:
return list_a
else:
if list_a[-1] &gt; list_b[-1]:
return( my_sort(list_a[0:-1], list_b) + [list_a.pop(-1)])
else:
return(my_sort(list_a,list_b[:-1]) + [list_b.pop(-1)])

Anonymous on Aug 25, 2016