面试-查找两个数组中的相同元素

1、最简单的办法进行遍历排序:

两个for循环遍历,执行次数最多,效率较低

let var1 = [ 1, 2, 3 ]

let var2 = [ 2, 3, 4 ]

let list = [ ]

for ( let i = 1; i < var1.length; i++ ){

for ( let j = 1; j < var2.length; j++ ){

    if (var1[ i ] === var2 [ j ]) list.push( var1[ i ] )

}

}

如果要求不能重复元素:在push前indexof判断是否存在

2、归并排序

对两个数组分别进行sort排序,然后判断两个数组中的大小,小的那个++,如果两个数组值一样,加入新的数组

let var1 = [ 1, 2, 3 ]

let var2 = [ 2, 3, 4 ]

var1.sort()

var2.sort()

let list = [ ]

let i = 0, j = 0

while( i < arr1.length && j < arr2.length ) {

if( arr1[i]  ===  arr2[j] ) {

    list.add( arr1[i] )

    i++

    j++

}

else if ( arr1[i]  <  arr2[j] ) i++

else j++

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值