JAVA中求某个数组的众数?自己写了个,但是不对

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中求某个数组的众数?自己写了个,但是不对相关的知识,希望对你有一定的参考价值。

众数的定义:一组数据中出现次数最多的数称为这组数据的众数。 下面是我写的方法代码 public static double mode(double[] array) Arrays.sort(array); int count=0; int longest=0; double mode=0; for (int i=0; i<array.length; i++) if(array[i]==array[i+1]) count++; if(array[i]!=array[i+1]) longest=count; if (count>longest) mode=array[i]; longest=count; count=0; return mode; 我自己也觉得写得不太对,但是不知道该怎么修改

参考技术A public
static
double
mode(double[]
array)

Arrays.sort(array);
int
count
=
1;
int
longest
=
0;
double
mode
=
0;
for
(int
i
=
0;
i
<
array.length
-
1;
i++)

if
(array[i]
==
array[i
+
1])

count++;

else

count
=
1;//如果不等于,就换到了下一个数,那么计算下一个数的次数时,count的值应该重新符值为一
continue;

if
(count
>
longest)

mode
=
array[i];
longest
=
count;


System.out.println(longest);//打印出这个数出现的次数已判断是否正确
return
mode;

我运行过了,是对的
参考技术B 你好!
帮改了下,应该是对的
public
static
double
mode(double[]
array)
Arrays.sort(array);
int
count=1;
int
longest=0;
double
mode=0;
for
(int
i=0;
i
longest)
mode=array[i];
longest=count;

else
count=1;

return
mode;

你犯了几个错误,第一没有考虑边界情况,第二你重置变量的时机都不对。
打字不易,采纳哦!
参考技术C 帮改了下,应该是对的
public
static
double
mode(double[]
array)
Arrays.sort(array);
int
count=1;
int
longest=0;
double
mode=0;
for
(int
i=0;
i<array.length-1;
i++)
if(array[i]==array[i+1])

count++;
if
(count>longest)
mode=array[i];
longest=count;

else
count=1;

return
mode;

你犯了几个错误,第一没有考虑边界情况,第二你重置变量的时机都不对。

501. 二叉搜索树中的众数

一、题目描述

二、解题

中序遍历

这题先使用中序遍历,将数据变成有序的,然后查找众数,这题的区别众数可以是多个,与之前的169题不一样的是这个题的众数的数量是大于N/2的,可以使用摩尔投票法。所以这题也提供了一个思路如何在数组中查找众数。


class Solution 
    List<Integer> answer = new ArrayList<Integer>();
    int base, count, maxCount;
    public int[] findMode(TreeNode root) 
       //这里不需要使用哈希表 很占空间
       dfs(root);
       //对一个列表进行查找,找一个众数
       int[] res = new int[answer.size()];
       for(int i = 0;i<answer.size();i++)
           res[i] = answer.get(i);
       
       return res;
    
    // 中序遍历
     public void dfs(TreeNode root) 
        if (root == null) 
            return;
        
        dfs(root.left);
        update(root.val);
        dfs(root.right);
    
    //更新数据
    public void update(int x) 
        if (x == base) 
            ++count;
         else 
            count = 1;
            base = x;
        
        if (count == maxCount) 
            answer.add(base);
        
        if (count > maxCount) 
            maxCount = count;
            answer.clear();
            answer.add(base);
        
    

以上是关于JAVA中求某个数组的众数?自己写了个,但是不对的主要内容,如果未能解决你的问题,请参考以下文章

查找数组中的众数

分块入门9 --- 区间众数

计算机考研复试真题 众数

501. 二叉搜索树中的众数

leetcode简单501二叉搜索树中的众数

Java 求解二叉搜索树中的众数