找出数组中重复次数最多的元素并打印
2010-10-09 16:08
369 查看
1.找出数组中重复次数最多的元素并打印
import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; import commons.algorithm.sort.QuickSort; /** * 找出数组中重复次数最多的元素并打印 * */ public class Problem_3 { //先快速排序后循环查找 O( n*log2(n) + n ) public static void find1(int[] arr){ QuickSort.sort(arr); int max = arr[0]; int pre=1; int now=1; for(int i=0;i<(arr.length-1);i++){ if(arr[i]==arr[i+1]) now++; else { if(now>=pre){ pre=now; now=1; max=arr[i]; } } } } //嵌套循环查找 O(n*n) public static void find2(int[] arr){ int pre=0; int max=arr[0]; for(int i=0;i<arr.length;i++){ int now=0; for(int j=0;j<arr.length;j++){ if(arr[i]==arr[j]) { now++; } } if(now>=pre){ max=arr[i]; pre=now; } } } //通过 Hash 方式 public static void find3(int[] arr){ HashMap<Integer,Integer> hm=new HashMap<Integer, Integer>(); for(int i=0;i<arr.length;i++){ if(hm.containsKey(arr[i])) { int count=hm.get(arr[i]); hm.put(arr[i], ++count); }else{ hm.put(arr[i],1); } } Iterator<Entry<Integer, Integer>> it=hm.entrySet().iterator(); int pre=0; int max=arr[0]; while(it.hasNext()) { Entry<Integer, Integer> en=it.next(); int key=en.getKey(); int val=en.getValue(); if(val>pre){ pre=val; max=key; } } } public static void main(String args[]){ //数据量800 重复元素多,查找时候分别是: 46 3680 195 int arr2[]={0,1,2, ..... ,0,1,2,3,6,7,8,9}; //数据量800 重复元素少,查找时间分别是 82 3727 360 int arr[]={0,0,0,11,12,13,14,5,6 ...... ,51,52,53,,728,29,730,731,3,794,95,796,797,798,799}; long start,end; start=System.currentTimeMillis(); for(int i=0;i<1000;i++) find1(arr); end=System.currentTimeMillis(); System.out.println(end-start); start=System.currentTimeMillis(); for(int i=0;i<1000;i++) find2(arr); end=System.currentTimeMillis(); System.out.println(end-start); start=System.currentTimeMillis(); for(int i=0;i<1000;i++) find3(arr); end=System.currentTimeMillis(); System.out.println(end-start); } }
相关文章推荐
- 找出数组中重复次数最多的元素并打印
- 练手系列(1) 找出数组中重复次数最多的元素并打印
- 找出数组中重复次数最多的元素
- Java实现找出数组中重复次数最多的元素以及个数
- java 找出n个元素数组中重复次数最多的数(假设出现次数大于n/2)
- 找出整型数组中重复次数最多的元素
- java找出一个数组中出现次数最多且最大的那个元素
- 求一个数组重复出现次数最多的元素以及下标位置
- 求一个数组中重复元素出现最多值,最大的元素及出现次数,次数相同时,取最大值,优先考虑次数
- 求数组中重复次数最多的元素
- JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
- 求一个数组中重复元素出现最多值,最大的元素及出现次数,次数相同时,取最大值,优先考虑次数
- 找出数组中重复次数为2的元素,
- php如何找出一个数组重复次数最高的元素?
- 如何找出数组中重复次数最多的数
- 找出一个数组中重复次数最多的字符暨找出Map中的最大Value及其对应的Key
- 347. Top K Frequent Elements(找出数组中出现次数最多的前k个元素)
- 找出数组里面元素出现次数最多的问题
- C# 找出数组中重复次数最多的数值
- 程序员面试题目总结--数组(三)【旋转数组的最小数字、旋转数组中查找指定数、两个排序数组所有元素中间值、数组中重复次数最多的数、数组中出现次数超过一半的数】