标签:solution 代码 ret nbsp integer mil code 题目 []
题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为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 }
标签:solution 代码 ret nbsp integer mil code 题目 []
原文地址:https://www.cnblogs.com/llsq/p/8796622.html