4 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
嘗試下面代碼
let source = [3,5,4,8];
let target = [5,8];
let needle = 4;
let source_index = source.indexOf(needle);
if(source_index !== -1){
let target_index = source_index? target.indexOf(source[source_index - 1]) + 1:source_index;
target.splice(target_index, 0, needle);
}

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
還是二分 修改一下比較的方式就行
let arr1 = [3,5,4,8]
let arr2 = [5,8]
let indexMap = {}
for(let i=0;i<arr1.length;i++){
indexMap[arr1[i]] = i
}
insert(arr2,0,arr2.length,4)
console.log(JSON.stringify(arr2))
function insert(arr,l,r,num){
if(l==r){
arr.splice(l, 0, num)
return
}
let index = parseInt((r+l)/2)
if(indexMap[arr[index]]<indexMap[num]){
insert(arr,index+1,r,num)
}else{
insert(arr,l,index,num)
}
}

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
let source = [3, 5, 4, 8]
let target = [5, 8]
let insert = 4
let index = source.indexOf(insert)
for (let i = 0; i < target.length; i++) {
let source_index = source.indexOf(target[i])
if (source_index > index) {
target.splice(i, 0, insert)
break
}
}
if (target.indexOf(insert) === -1) target.push(insert)

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
既然是有序的……其實(shí)有沒有arr1
都無所謂的……
有序的,你直接用二分把ai
往arr2
里面塞就行了。
添加回答
舉報(bào)