java中在数组中找到多数元素
2021/10/16 12:09:29
本文主要是介绍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中在数组中找到多数元素的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API