剑指offer-数组中超过一半的数字
Posted 浮生缘,半生梦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer-数组中超过一半的数字相关的知识,希望对你有一定的参考价值。
题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
思路:利用map
ac代码:
1 import java.util.HashMap; 2 import java.util.List; 3 import java.util.Map; 4 public class Solution { 5 public int MoreThanHalfNum_Solution(int [] array) { 6 Map<Integer,Integer>map=new HashMap<Integer, Integer>(); 7 int n=array.length; 8 if(n==1) 9 return array[0]; 10 int x; 11 boolean flag=false; 12 for(int i=0;i<n;i++){ 13 x=array[i]; 14 if(map.containsKey(x)){ 15 map.put(x, map.get(x)+1); 16 if(map.get(x)>n/2){ 17 return x; 18 } 19 }else{ 20 map.put(x,1); 21 } 22 } 23 return 0; 24 } 25 }
以上是关于剑指offer-数组中超过一半的数字的主要内容,如果未能解决你的问题,请参考以下文章
Java 剑指offer(39) 数组中出现次数超过一半的数字