Java教程

java中在数组中找到多数元素

本文主要是介绍java中在数组中找到多数元素,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
 * 题目内容:
 * 给定一个大小为 n 的数组,找到其中的多数元素。
 * 多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
 * 你可以假设数组是非空的,并且给定的数组总是存在多数元素。
 * 示例 1:
 * 输入:[3,2,3] -> [2,3,3]
 * 输出:3
 
 * 示例 2:
 * 输入:[2,2,1,1,1,2,2] -> [1,1,1,2,2,2,2]
 * 输出:2

题目分析:
1,在数组中找多数元素就是找众数,一般当数组元素排序后
众数是中间的元素
2,或者使用哈希表方法,映射存储出现的元素和该元素出现的次数

代码如下:
(1)一般方法

import java.util.Arrays;
public class Test{
        public static void main(String[] args) {
            int[] arr =new int[]{2,2,1,1,1,2,2};
            System.out.println( "这个数组的众数是:" + manyNum(arr));
        }
        public static int manyNum(int[] arr){
            //JDK已有排序方法
            Arrays.sort(arr);
            return (arr[arr.length /2]);
        }
}

(2)哈希表方法
步骤;
1.产生对象

HashMap<Inteder,Integer> map = new HashMap<>();

2.设置内容
key 值唯一,不能重复,value可重复

map.put(key,value);

3.取得内容,取得key值对应的value

map.get(key);

4.遍历

Set<Map.Entry<Integer,Integer>> set = map.entrySet();
for(Map.Entry<Integer,Integer>entry:set){}

代码如下:

 public static int manyNum(int[] arr) {
                HashMap<Integer, Integer> map = new HastMap<>();
                //遍历数组将不重复元素以及出现次数存在映射中
                for (int i = 0; i < arr.length; i++) {
                    //此时映射存在元素
                    if (map.containsKey(arr[i])) {
                        //将出现次数+1
                        int value = map.get(arr[i]);
                        map.put(arr[i], value + 1);
                    } else {
                        //此时映射还没有该元素
                        map.put(arr[i], 1);//HashMap表中存储方法put(不重复的元素,value)
                    }
                }
                //在数据集查找出现次数> n/2的元素
                //哈希表的遍历
                Set<Map.Entry<Integer, Integer>> set = map.entrySet();
                for (Map.Entry<Integer, Integer> entry : set) {
                    //取出每个元素的value值
                    if (entry.getVlaue() > arr.length / 2) {
                        return entry.getKey();
                    }
                }
                return -1;
            }
这篇关于java中在数组中找到多数元素的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!