1、美团算法题

2021/10/2 14:10:20

本文主要是介绍1、美团算法题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.  同类项统计

给定数组['1a','2b','13c','5a'],数组元素的格式是一个数字(可能多位)前缀与一个字母的组合,输出出现次数最多的字母对应的前缀数字之和

思路:使用hash。

  • 将字母作为键;
  • 将数组[字母出现的次数,前缀数字之和]作为键值。

实现:

  function fun(arr){
    let map = new Map();
    for(let i=0;i<arr.length;i++){
      let n1 = arr[i].slice(0,arr[i].length-1)-'0';
      let n2 = arr[i][arr[i].length-1];
      if(!map.has(n2)){ //该字母第一次出现
        map.set(n2,[1,n1]);
      }else{ //该字母之前已出现。更新其出现的次数、累加和
        let old = map.get(n2);
        map.set(n2,[old[0]+1,old[1]+n1]);
      }
    }

    let res = 0; //出现的最多次数所对应的累加和
    let max = 0; //出现的最多次数
    for(let key of map.keys()){//寻找出现次数最多的字母
     const item = map.get(key);
     if( item[0]>max){
       max = item[0];
       res = item[1];
     }
    }
    return res;
  }
  let arr = ['1a','2b','13c','5a'];
  console.log(fun(arr)); //6


 



这篇关于1、美团算法题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程