Lazy33 2021-05-16 22:05 采纳率: 50%
浏览 251
已结题

js找到数组中前三大的数字,并返回他们仨的下标。

数组里面都是数字  不包含字符串,我递归用不好,有没有大佬教一下

  • 写回答

3条回答 默认 最新

  • 幻灰龙 2021-05-16 22:17
    关注

    topK 你用堆排序算法改改就好了,参考:JavaScript: Sort a list of elements using Heap sort - w3resource

     

    如果是这个需求:

    >比如第一题选A,则在第一种性格数+1,选B则第八种性格数+1,第二题选A是第四种性格数+1,选B则是第三种性格数+1。

     

    设置数组描述你的需求:

    * 用 0-8 描述9种性格

    * 用长度为2的数组描述选择A还是B

     

    那么,36题目的选择数组如下,一共36个元素,每个元素是一个选A或B时对应的性格ID 

    select = [ [0,7], [3, 2], ...]

    用一个长度为9的数组表示每个性格被选择的次数,初始时都是0: count = [0,0,0,0,0,0,0,0,0]

     

    那么第i道题目选择时

    * 选择A则: count[select[i][0]] += 1

    * 选择B则: count[select[i][1]] += 1

     

    最后,你要计算前3的性格,数据这么小,直接排序获得即可:

    v.map((c,i)=>({value:c,index:i})).sort((a,b)=>a.value-b.value).slice(0,3)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月24日

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)