1、找到无序数组中出现次数最多的那一个数(如果有多个只能返回1个):
多数元素
2、统计数组出现次数最多的那n个数,可以返回多个!!!
比如:BST的所有众数
思想:
Step1:首先有序化:如果数组是无序的,则先对数组进行排序,让其变为一个有序序列。
Step2:然后定义如下变量:
1)preValue指针用于记录前一个元素的值
2)cur指针指向当前正在遍历的元素
3)curTimes变量用于记录当前遍历的元素出现的次数
4)maxTimes变量用于记录当前遍历到的元素中最大频率
5)List< Integer> res的结果集
依次遍历各元素,当 cur.val == preValue时,令curTimes++ 否则 令curTimes = 1;
然后再去判断
if(curTimes==maxTimes) {
res.add(cur.val);
}
if(curTimes>maxTimes){
res.clear()//清空之前的记录
res.add(cur.val);
maxTimes = curTimes
}
众数问题
最新推荐文章于 2023-12-07 19:32:14 发布