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 publicstatic
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中求某个数组的众数?自己写了个,但是不对的主要内容,如果未能解决你的问题,请参考以下文章