给定一个有序不重复数组arr1=[a1,a2,....,an],一个该数组的子集arr2=[b1,b2,....,bn](顺序与arr1一致)任意给定一个arr1的元素ai,请将其插入arr2并保证顺序与arr1的顺序一致比如arr1[3,5,4,8],arr2[5,8]现在要把4插入到arr2需要结果为[5,4,8]求一个优雅的运算方法---------------分割线-------------我采纳了@hkuclion的答案并作了小小的修改letsource=[3,5,4,8];lettarget=[5,8];letneedle=4;letsource_index=source.indexOf(needle);if(source_index!==-1){lettarget_index=-1;while(source_index&&target_index===-1){target_index=target.indexOf(source[--source_index]);}target.splice(target_index+1,0,needle);}
2 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
尝试下面代码letsource=[3,5,4,8];lettarget=[5,8];letneedle=4;letsource_index=source.indexOf(needle);if(source_index!==-1){lettarget_index=source_index?target.indexOf(source[source_index-1])+1:source_index;target.splice(target_index,0,needle);}
胡子哥哥
TA贡献1825条经验 获得超6个赞
还是二分修改一下比较的方式就行letarr1=[3,5,4,8]letarr2=[5,8]letindexMap={}for(leti=0;iindexMap[arr1[i]]=i }insert(arr2,0,arr2.length,4)console.log(JSON.stringify(arr2))functioninsert(arr,l,r,num){if(l==r){arr.splice(l,0,num)return}letindex=parseInt((r+l)/2)if(indexMap[arr[index]]insert(arr,index+1,r,num) }else{insert(arr,l,index,num)}}
添加回答
举报
0/150
提交
取消