如何使用java求众数

这篇文章主要为大家展示了如何使用java求众数,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“如何使用java求众数”这篇文章吧。

十年的西安网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整西安建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“西安网站设计”,“西安网站推广”以来,每个客户项目都认真落实执行。

给定一个大小为 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。
说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。
示例 1:

输入: [3,2,3]
输出: [3]

示例 2:

输入: [1,1,1,3,3,2,2,2]
输出: [1,2]

答案:

 1public List majorityElement(int[] nums) {
2    List res = new ArrayList<>();
3    if (nums.length == 0)
4        return res;
5    int num1 = nums[0];
6    int num2 = nums[0];
7    int count1 = 1;
8    int count2 = 0;
9
10    for (int val : nums) {
11        if (val == num1)
12            count1++;
13        else if (val == num2)
14            count2++;
15        else if (count1 == 0) {
16            num1 = val;
17            count1++;
18        } else if (count2 == 0) {
19            num2 = val;
20            count2++;
21        } else {
22            count1--;
23            count2--;
24        }
25    }
26    count1 = 0;
27    count2 = 0;
28    for (int val : nums) {
29        if (val == num1)
30            count1++;
31        else if (val == num2)
32            count2++;
33    }
34    if (count1 > nums.length / 3)
35        res.add(num1);
36    if (count2 > nums.length / 3)
37        res.add(num2);
38    return res;
39}

解析:

最简单的一种方式是通过HashMap存储,key存储数组的值,value计算出现的次数,这种写法比较简单就不在列出,我们来看上面这种写法,超过1/3,说明最多也只有2个,我们先用两个变量num1和num2来存储。注意这里的关键点在第一个循环语句,也就是10到25行,其实也很好理解,我们还可以参照之前的146,求众数的第一种解法,这里就不在详细介绍。

Java有哪些集合类

Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue队列:有序,可重复的;3、Set集合:不可重复;4、Map映射:无序,键唯一,值不唯一。

以上就是关于“如何使用java求众数”的内容,如果该文章对您有所帮助并觉得写得不错,劳请分享给您的好友一起学习新知识,若想了解更多相关知识内容,请多多关注创新互联行业资讯频道。


分享标题:如何使用java求众数
标题路径:http://myzitong.com/article/jedhpd.html