亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

面試題

系統 2091 0

一道阿里電話面試中的算法題

文章分類: Java編程

電話面試算法題一道:找出數組中重復次數最多的元素并打印

問題不難,看你能給出更優的方案

Java代碼
  1. import java.util.HashMap;
  2. import java.util.Iterator;
  3. import java.util.Map.Entry;
  4. import commons.algorithm.sort.QuickSort;
  5. /**
  6. *找出數組中重復次數最多的元素并打印
  7. *
  8. */
  9. public class Problem_3{
  10. //先快速排序后循環查找O(n*log2(n)+n)
  11. public static void find1( int []arr){
  12. QuickSort.sort(arr);
  13. int max=arr[ 0 ];
  14. int pre= 1 ;
  15. int now= 1 ;
  16. for ( int i= 0 ;i<(arr.length- 1 );i++){
  17. if (arr[i]==arr[i+ 1 ])
  18. now++;
  19. else {
  20. if (now>=pre){
  21. pre=now;
  22. now= 1 ;
  23. max=arr[i];
  24. }
  25. }
  26. }
  27. }
  28. //嵌套循環查找O(n*n)
  29. public static void find2( int []arr){
  30. int pre= 0 ;
  31. int max=arr[ 0 ];
  32. for ( int i= 0 ;i<arr.length;i++){
  33. int now= 0 ;
  34. for ( int j= 0 ;j<arr.length;j++){
  35. if (arr[i]==arr[j]){
  36. now++;
  37. }
  38. }
  39. if (now>=pre){
  40. max=arr[i];
  41. pre=now;
  42. }
  43. }
  44. }
  45. //通過Hash方式
  46. public static void find3( int []arr){
  47. HashMap<Integer,Integer>hm= new HashMap<Integer,Integer>();
  48. for ( int i= 0 ;i<arr.length;i++){
  49. if (hm.containsKey(arr[i])){
  50. int count=hm.get(arr[i]);
  51. hm.put(arr[i],++count);
  52. } else {
  53. hm.put(arr[i], 1 );
  54. }
  55. }
  56. Iterator<Entry<Integer,Integer>>it=hm.entrySet().iterator();
  57. int pre= 0 ;
  58. int max=arr[ 0 ];
  59. while (it.hasNext()){
  60. Entry<Integer,Integer>en=it.next();
  61. int key=en.getKey();
  62. int val=en.getValue();
  63. if (val>pre){
  64. pre=val;
  65. max=key;
  66. }
  67. }
  68. }
  69. public static void main(Stringargs[]){
  70. //數據量800重復元素多,查找時候分別是:463680195
  71. int arr2[]={ 0 , 1 , 2 ,.....
  72. , 0 , 1 , 2 , 3 , 6 , 7 , 8 , 9 };
  73. //數據量800重復元素少,查找時間分別是823727360
  74. int arr[]={ 0 , 0 , 0 , 11 , 12 , 13 , 14 , 5 , 6 ......
  75. , 51 , 52 , 53 ,, 728 , 29 , 730 , 731 , 3 , 794 , 95 , 796 , 797 , 798 , 799 };
  76. long start,end;
  77. start=System.currentTimeMillis();
  78. for ( int i= 0 ;i< 1000 ;i++)find1(arr);
  79. end=System.currentTimeMillis();
  80. System.out.println(end-start);
  81. start=System.currentTimeMillis();
  82. for ( int i= 0 ;i< 1000 ;i++)find2(arr);
  83. end=System.currentTimeMillis();
  84. System.out.println(end-start);
  85. start=System.currentTimeMillis();
  86. for ( int i= 0 ;i< 1000 ;i++)find3(arr);
  87. end=System.currentTimeMillis();
  88. System.out.println(end-start);
  89. }
  90. }

面試題


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 被狠狠操 | 日韩你懂的 | 香蕉网伊在线中文慕大全 | 日韩在线色 | 免费视频成人国产精品网站 | 日本中文在线视频 | 久久澳门| 亚洲国产日产韩国欧美综合 | 亚洲国产一区二区三区最新 | 在线欧美精品一区二区三区 | 成人欧美一区二区三区黑人妖 | 一区二区在线播放福利视频 | 91精品日韩 | 久久伊伊香蕉综合精品 | 久久无码精品一区二区三区 | 国产一区二区三区四区在线观看 | 亚洲欧美另类图片 | 四虎自拍 | 毛片视频网站在线观看 | 成人午夜性视频欧美成人 | 欧美成人激情视频 | 久久精品爱国产免费久久 | 成人性色生活影片 | 一区二区国产在线观看 | 亚洲婷婷在线视频 | 热久久国产精品 | 视频一区欧美 | 九九伦理影院手机观看 | 天天射天天怕 | 色八戒国产一区二区三区四区 | 欧美兽皇video | 亚洲欧美在线观看一区二区 | 一级毛片一级毛片一级毛片aa | www九色| 欧美japanese孕交 | 午夜宅男免费完整在线观看 | 欧洲亚洲视频 | 免费永久国产在线视频 | 午夜视频网站在线观看 | 国产一级特黄aaaa大片野外 | 欧美激情中文字幕一区二区 |