2 回答

TA貢獻1942條經驗 獲得超3個贊
兩個數組的交并差補本來就是個復雜的問題,你還沒限定數組的元素是啥,對象你要不要判等?數字和字符串能不能隱式轉換?set是寫進規范里的,為啥算語法糖?只能用es5,還不能用indexOf,includes,我就不知道用哪些算復雜度低?
最關鍵
還要復雜度低于o(nm) 復雜度低于o(nm) 復雜度低于o(n*m)
在沒給出任何條件卻給出這么多限定條件的情況下
題主你想想吧,反正我能力有限,想不出來。
要不你寫出來讓大家瞅瞅,大家伙給你點贊~(^o^)/~

TA貢獻1818條經驗 獲得超8個贊
并 = function(A, B) {
d = {}
set = []
for (k in A) {
if (!(A[k] in d)){set.push(A[k])}
d[A[k]] = k
}
for (k in B) {
if (!(B[k] in d)){set.push(B[k])}
d[B[k]] = k
}
return set
}
交 = function(A, B) {
d = {}
set = []
for (k in A) {
d[A[k]] = k
}
for (k in B) {
if (B[k] in d){set.push(B[k])}
d[B[k]] = k
}
return set
}
差 = function(A, B) {
d = {}
set = []
for (k in B) {
d[B[k]] = k
}
for (k in A) {
if (!(A[k] in d)){set.push(A[k])}
d[A[k]] = k
}
return set
}
補 = function(A, B) {
return 差(B, A)
}
> 并([1,2],[1,3,5])
[ 1, 2, 3, 5 ]
> 差([1,2],[1,3,5])
[ 2 ]
> 交([1,2],[1,3,5])
[ 1 ]
> 補([1,2],[1,3,5])
[ 3, 5 ]
>
添加回答
舉報