为了账号安全,请及时绑定邮箱和手机立即绑定

找出数组中连续重复元素的起始索引?

找出数组中连续重复元素的起始索引?

慕容708150 2018-11-14 16:15:56
var arr = [1,2,3,9,9,9,9,6,7,8,10,10,10,15]找出连续重复元素的起始索引,求一个复杂度较低的算法?
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

var arr = [1,2,3,9,9,9,9,6,7,8,10,10,10,15]

var dic = {}

for (k in arr){

     if (!dic[arr[k]]){dic[arr[k]] = [k]}

     else{dic[arr[k]][1] = k}

 }

for (k in dic){if (dic[k].length==1){delete(dic[k])}}


console.log(dic)

{ '9': [ '3', '6' ], '10': [ '10', '12' ] }

@boxsnake

var arr = [1,2,3,9,9,9,9,6,7,9,9,9,8,10,10,10,15,10,10]

var dic = {}

for (k in arr){

    k = Number(k)

    if(arr[k]==arr[k-1]||arr[k]==arr[k+1]){

        if (!dic[arr[k]]){dic[arr[k]] = [[k,k]];continue}

        s = dic[arr[k]].slice(-1)[0]

        if(k-s[1]==1){s[1]=k}

        else{dic[arr[k]].push([k,k])}

    }

}

console.log(dic)

{ '9': [ [ 3, 6 ], [ 9, 11 ] ],

  '10': [ [ 13, 15 ], [ 17, 18 ] ] }


查看完整回答
反对 回复 2018-12-25
  • 1 回答
  • 0 关注
  • 519 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信