A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨雯雯 中级黑马   /  2012-12-20 19:25  /  1335 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨雯雯 于 2012-12-24 14:42 编辑

题目是:给出一组字符如{1,3,4,7,2,1,1,5,2},让你输出里面出现次数最多且数值最大的一个,出现几次
public void fun() {
int[] a = { 1, 3, 4, 7, 2, 1, 1, 5, 2, 2, 7, 2, 7,4,4,4,4,4 };
Arrays.sort(a);
for (int i = 0; i < a.length; i++) {
System.out.print(a + " ");
}
int maxNumber = a[0], maxCount = 1;
int curNumber = a[0], curCount = 1;
for (int i = a.length; i > 0; i--) {
curNumber = a;
if (a == a[i - 1]) {
curCount++;
} else {
if (curCount > maxCount) {
maxCount = curCount;
maxNumber = curNumber;
}
curCount = 1;
}
}
System.out.println("\nmaxCount:"+maxCount+",maxNumber:"+maxNumber);
}
请高手看看,问题出在哪里了?

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
你好,没有注释看不懂你写的。写代码要加注释啊
不过看需求可以这样分析:
1、遍历数组找出最大的一个
2、然后在数组中找那个最大的数出现了几次
回复 使用道具 举报
建议做两个方法:第一个方法做一个最大值max
第二个方法就遍历max然后记录就可以了
回复 使用道具 举报
看你这是二分法查找吧  但是为什么只有两个指针呢,而且还是指向同一个!!!!!
回复 使用道具 举报
我对于这道题有自己的一个想法 不知道行不行:
                int[] a = { 1, 3, 4, 7, 2, 1, 1, 5, 2, 2, 7, 2, 7,4,4,4,4,4 };
                Arrays.sort(a);//先对数组进行排序
                int count = 0;
                for(int i =a.length-1;i>0;i--){//对排序后的数组进行遍历
                        if(a[a.length-1] == a[i])//从最后一个元素向前找 如果最后一个元素与前面元素相等 就让cout++
                                count++;
                }
                System.out.println(a[a.length-1]+":"+count);//打印数组中最大元素的个数

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
蔡少凯 发表于 2012-12-20 20:08
我对于这道题有自己的一个想法 不知道行不行:
                int[] a = { 1, 3, 4, 7, 2, 1, 1, 5, 2, 2, 7, 2, 7,4,4 ...

恩,我知道了,我的a.length少减了1,谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马