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

来源:互联网 发布:网络电玩捕鱼游戏 编辑:程序博客网 时间:2024/06/06 11:02
面试题:给出一数组,求这数组中出现最多次数的值且最大,不给使用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,2LinkedList<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);}}



第一次写博客!欢迎大家指点!谢谢!!

阅读全文
1 0
原创粉丝点击