剑指offer打卡8-数组中出现次数超过一半的数字(java版)
2020-04-20 17:12
176 查看
剑指offer打卡8-数组中出现次数超过一半的数字(java版)
1. 考察知识点
- 数组
2. 题目
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
3. 思路
- 定义一个hashMap,遍历数组得到每个数字的出现次数,并寻找出现次数超过数组长度一半的数字
4. 代码实现
import java.util.HashMap; import java.util.Map; public class Solution { public int MoreThanHalfNum_Solution(int [] array) { HashMap<Integer,Integer> map = new HashMap<>(); //用来存放数组中每个数字出现的个数 //对数组从左到右进行遍历 for (int i = 0; i < array.length; i++) { //如果该值之前已经出现过,在map中对该值的出现次数加1 if (map.containsKey(array[i])){ map.put(array[i], map.get(array[i])+1); }else {//如果该值从来没出现过,将该值保存到map中并将次数记录为1 map.put(array[i], 1); } } //对map进行依次遍历,如果该值的出现次数大于数组长度的一半,输出这个值 for (Map.Entry<Integer,Integer> entry : map.entrySet()) { if (entry.getValue() > array.length / 2){ return entry.getKey(); } } return 0; } }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 【剑指offer-Java版】29数组中出现次数超过一半的数字
- 剑指offer:数组中出现次数超过一半的数字(java)
- 剑指Offer:面试题29——数组中出现次数超过一半的数字(java实现)
- 剑指offer28 数组中出现次数超过一半的数字(java)
- 剑指Offer--【数组中出现次数超过一半的数字】--java
- 剑指offer-29 数组中出现次数超过一半的数字
- 剑指offer-数组中出现次数超过一半的数字
- 剑指Offer 29 数组中出现次数超过一半的数字
- 【面试题】剑指offer29--数组中出现次数超过一半的数字
- [剑指offer][面试题29]数组中出现次数超过一半的数字
- 【剑指offer】数组中出现次数超过一半的数字
- 【剑指Offer学习】【面试题29 :数组中出现次数超过一半的数字】
- 剑指offer-面试题29.数组中出现次数超过一半的数字
- 剑指Offer----面试题29:数组中出现次数超过一半的数字
- 【剑指 offer】(二十九)—— 数组中出现次数超过一半的数字(及该数字出现的次数)
- 剑指offer——数组中出现次数超过一半的数字_(待写最优法分治)
- 剑指offer-题29:数组中出现次数超过一半的数字
- 剑指Offer之数组出现次数超过一半的数字
- 剑指offer之 数组中出现次数超过一半的数字
- 【剑指Offer】数组中出现次数超过一半的数字