您现在的位置是:网站首页 / 大后端大后端

手撕算法-从数组中找出元素最多的一个元素并输出元素

自由达人2021-03-28 1018人围观

简介 给定一个无序数组,从数组中找到出现次数最多的一个元素。我的思路是把数组遍历存放到Map结构,因为Map是一个key-value数据结构,可以在这里把元素作为key,出现的次数作为value,然后再通过冒泡排序找到value最多的那个key和value

这道小题也是出现频率比较大的,我之前面试顺丰同城的时候就有手写算法题,刚好题目就是从数组中找到出现元素最多的那个元素。
我的思路是:
1.将数组存放道一个以元素值作为key,出现次数为value的Map中
2.遍历Map,采用冒泡排序将结果呈现出来

public static void main(String[] args) {
        // 给定一个数组
        Integer[] nums = new Integer[]{1,1,2,3,2,5,3,1,6,5,6,7,8,6,5,3,2,1,2,2,2,2,2};
        Map<Integer, Integer> countMap = new HashMap<>();
        for (Integer i =0; i< nums.length;i++) {
            Integer count = countMap.get(nums[i]);
            if(null == count) {
                countMap.put(nums[i], 1);
            }else {
                count = count+1;
                System.out.println(count);
                countMap.put(nums[i], count);
            }
        }

        // 遍历map找到count次数最多的那个元素
        Set<Integer> integers = countMap.keySet();

        Integer num = null;
        Integer count = 0;
        for (Integer key : integers) {
            Integer countTmp = countMap.get(key);
            // 冒泡排序
            if(countTmp >=count) {
                count = countTmp;
                num = key;
            }
        }

        System.out.println("出现次数最多的元素是"+ num +",出现了"+count+"次" );
    }
  • 22 点赞
  • 0 收藏
  • 分享

作品评论

  • 自由达人
    2021-04-06
    加油,it人