春風博客

          春天里,百花香...

          導航

          <2008年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          公告

          MAIL: junglesong@gmail.com
          MSN: junglesong_5@hotmail.com

          Locations of visitors to this page

          常用鏈接

          留言簿(11)

          隨筆分類(224)

          隨筆檔案(126)

          個人軟件下載

          我的其它博客

          我的鄰居們

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          判斷數組元素是否存在重復,要求時間復雜度為O(1)

          下面的代碼涉及判斷數組元素是否存在重復,要求時間復雜度為O(1)。
          這樣的題肯定不能用雙循環比較,這樣太慢,用hashcode判斷是正道,使用現成的hashset更能簡化代碼。

          代碼如下:
          package com.sitinspring;

          import java.util.HashSet;
          import java.util.Set;

          /**
           * 數組重復測試,要求時間復雜度為O(n)
           * 
          @author sitinspring(junglesong@gmail.com)
           * 
          @since 2008-6-11 上午11:12:53
           * @vsersion 1.00 創建 sitinspring 2008-6-11 上午11:12:53
           
          */

          public class ArrayDuplicateTest{
              
          /**
               * 構造函數
               *
               
          */

              
          public ArrayDuplicateTest(int[] arr){
                  System.out.print(
          "數組:");
                  
          for(int temp:arr){
                      System.out.print(temp
          +",");
                  }

                  
                  
          if(hasDuplicateItem(arr)==false){
                      System.out.println(
          "無重復結果");
                  }

                  
          else{
                      System.out.println(
          "有重復結果");
                  }

              }

              
              
          /**
               * 取得檢測結果
               * 
          @param arr
               * 
          @return
               
          */

              
          private boolean hasDuplicateItem(int[] arr){
                  Set
          <Integer> set=new HashSet<Integer>();
                  
                  
          for(int i:arr){
                      
          if(!set.add(i)){
                          
          return true;
                      }

                  }

                  
                  
          return false;
              }

              
              
          public static void main(String[] args){
                  
          int[] arr1={1,2,3,4,5};
                  
          new ArrayDuplicateTest(arr1);
                  
                  
          int[] arr2={1,2,3,4,5,5,53,43,42,2,454,6,5456,4534,4};
                  
          new ArrayDuplicateTest(arr2);
                  
                  
          int[] arr3={1,2,3,4,5,767,4332,534,76,6583,356};
                  
          new ArrayDuplicateTest(arr3);
              }

          }

          輸出:
          數組:1,2,3,4,5,無重復結果
          數組:
          1,2,3,4,5,5,53,43,42,2,454,6,5456,4534,4,有重復結果
          數組:
          1,2,3,4,5,767,4332,534,76,6583,356,無重復結果

          posted on 2008-06-11 11:44 sitinspring 閱讀(3090) 評論(1)  編輯  收藏 所屬分類: Java基礎算法數據結構

          評論

          # re: 判斷數組元素是否存在重復,要求時間復雜度為O(1) 2013-07-12 14:43 Ricky

          這個時間復雜度不是O(1)吧,HashSet內吧的判定也影響時間復雜度的!  回復  更多評論   

          sitinspring(http://www.aygfsteel.com)原創,轉載請注明出處.
          主站蜘蛛池模板: 广东省| 蒙自县| 长乐市| 外汇| 民丰县| 兴业县| 通城县| 阳江市| 鲜城| 南雄市| 漾濞| 邢台县| 泗阳县| 明溪县| 桂平市| 祥云县| 贵州省| 陕西省| 司法| 博野县| 瓦房店市| 兴海县| 秦皇岛市| 安化县| 龙岩市| 宜黄县| 许昌市| 江西省| 天祝| 广水市| 中超| 湖州市| 紫云| 新密市| 黄平县| 牙克石市| 嵊泗县| 凤翔县| 苗栗市| 泊头市| 合肥市|