面试题:给出一数组,求这数组中出现最多次数的值且最大

面试题:给出一数组,求这数组中出现最多次数的值且最大,不给使用jdk里面的方法(我理解为求次数最多的值,次数相同者取大的那个数),作为一个17年的应届生,面试过2次而已,当时以为不难,捣鼓捣鼓着,发现也不简单,又不给用伪代码,想着阐述一下思路也好呀(当时的想法是,用hashSet去重,然后迭代去重后的数组,和原数组逐一比较,求出去重后的数组的每个值出现的次数,然后在比较谁的次数多,次数相同就比较谁的值大,当时写着写着也混乱了,觉得怪麻烦就结束了,感觉不通过,交卷走人,哪家公司缺java应届生的 面试题:给出一数组,求这数组中出现最多次数的值且最大求带走,回来后就捣鼓着调试着终于做出来了)
——————————————————————
不吐槽了,进入正题——源码分享。

package javaTest;

import java.util.LinkedList;

public class CollectionTest {

	public static void main(String[] args) {
		// 5,7,3,5,1,8,1,2,2
		LinkedList<Integer> arrList = new LinkedList<Integer>();
		arrList.add(5);
		arrList.add(7);
		arrList.add(3);
		arrList.add(5);
		arrList.add(1);
		arrList.add(8);
		arrList.add(1);
		arrList.add(2);
		arrList.add(2);

		int r_value = 0;//结果的值
		int r_num = 0;//结果的值的次数
		int f_value = 0;//数组中第一个值
		int f_num = 0;//数组中第一个值的次数

		while (!arrList.isEmpty()) {//数组不为空则继续
			f_value = arrList.getFirst();//获取数组第一个值用来对比余下的数有几个与其一样
			f_num = 1;
			arrList.removeFirst();//移除了数组第一个值
			for (int j = 0; j < arrList.size(); j++) {//循环获取余下数组的值用来比较
				int t_value = arrList.get(j);
				if (f_value == t_value) {
					arrList.remove(j);//在数组中查询到相等的值则移除
					f_num++;//并为其次数加一
					j--;//因为移除了一个值,所以下一个值的下标还是当前的j,所以先减一
				} 
			}
			if (f_num > r_num || (f_num == r_num && f_value > r_value)) {//如果当前数组第一个值的次数大于结果的次数,或者相等且值大于结果的值则替换
				r_value = f_value;
				r_num = f_num;
			}
		}
		System.out.println("结果:" + r_value+",次数:"+r_num);
		System.out.println("数组:" + arrList);
		
	}

}

求路过的朋友指点!!!撒花


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值