亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js數組操作問題

js數組操作問題

收到一只叮咚 2019-03-21 18:13:33
給定一個有序不重復數組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 的答案 并作了小小的修改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 = -1;    while (source_index && target_index === -1) {        target_index = target.indexOf(source[--source_index]);    }    target.splice(target_index + 1, 0, needle);}
查看完整描述

4 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

嘗試下面代碼


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);

}


查看完整回答
反對 回復 2019-04-01
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

還是二分 修改一下比較的方式就行


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)

    }

}


查看完整回答
反對 回復 2019-04-01
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

  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)


查看完整回答
反對 回復 2019-04-01
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

既然是有序的……其實有沒有arr1都無所謂的……

有序的,你直接用二分把aiarr2里面塞就行了。


查看完整回答
反對 回復 2019-04-01
  • 4 回答
  • 0 關注
  • 474 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號