栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 map = new HashMap<>();

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

map.put(key,value);

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

map.get(key);

4.遍历

Set> set = map.entrySet();
for(Map.Entryentry:set){}

代码如下:

 public static int manyNum(int[] arr) {
                HashMap 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> set = map.entrySet();
                for (Map.Entry entry : set) {
                    //取出每个元素的value值
                    if (entry.getVlaue() > arr.length / 2) {
                        return entry.getKey();
                    }
                }
                return -1;
            }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/327480.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号