本文共 1356 字,大约阅读时间需要 4 分钟。
本文首发于我的个人博客:
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
三种解法:
法1:
import java.util.HashMap;import java.util.Map;public class Solution { public int MoreThanHalfNum_Solution(int [] array) { HashMapmap = new HashMap (); int length = array.length; for(int i=0; i entry : map.entrySet()) { if(entry.getValue()*2>length) return entry.getKey(); } return 0; }}
法2:
import java.util.Arrays;public class Solution { public int MoreThanHalfNum_Solution(int [] array) { Arrays.sort(array); int half = array.length/2; int count = 0; for(int i=0; ihalf) return array[half]; else return 0; }}
法3:
public class Solution { public int MoreThanHalfNum_Solution(int [] array) { int res = array[0], count = 1; for(int i=1; iarray.length/2 ? res : 0; }}
转载地址:http://uunax.baihongyu.com/