开发者社区> 问答> 正文

遇到一个最活跃的数问题,求解答

现有一个包含 n 个整数的序列 (1<=n<=1e5),n 个数分别是 a1,a2,a3...an(0<=ai<=1e5),现在对于每个 ai 都有 3 种操作,一种是使 ai+1,一种是使 ai-1,还有一种是不变,问在对这 n 个数操作完后,出现次数最多的数的出现次数是多少。输入序列中整数个数 n,和 n 个整数 [a1,a2,…,an]输出一个数,表示在操作过后的出现次数最多的数的出现次数

展开
收起
游客4skzfvnrxrzbi 2021-12-23 17:03:09 349 0
1 条回答
写回答
取消 提交回答
  • 根据题意,每个数都有 3 种操作,一种是 +1,一种是 -1,还有一种是不变。操作过后出现次数最多的数设为 n,则操作之前n,n+1, n-1 三个数的出现次数应为最多。因此可以这样做,将数组中每个数的出现次数通过 HashMap进行统计,以数组中的数字作为key,每个数字出现的次数作为 value。将数组中的数字存入HashMap中后,遍历HashMap,对于每一个key ,统计 key-1,key,key+1的 value之和,遍历完HashMap后,得到的最大value和就是答案。 因此输入:8 [3,2,1,5,3,4,9,5] 输出:5

    2021-12-23 18:51:41
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载