现有一个包含 n 个整数的序列 (1<=n<=1e5),n 个数分别是 a1,a2,a3...an(0<=ai<=1e5),现在对于每个 ai 都有 3 种操作,一种是使 ai+1,一种是使 ai-1,还有一种是不变,问在对这 n 个数操作完后,出现次数最多的数的出现次数是多少。输入序列中整数个数 n,和 n 个整数 [a1,a2,…,an]输出一个数,表示在操作过后的出现次数最多的数的出现次数
根据题意,每个数都有 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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。