春風博客

          春天里,百花香...

          導航

          <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)原創,轉載請注明出處.
          主站蜘蛛池模板: 大同市| 遂平县| 隆回县| 得荣县| 闽清县| 石河子市| 甘泉县| 唐海县| 滦南县| 海丰县| 丘北县| 水城县| 澄城县| 榕江县| 巴中市| 祁阳县| 普定县| 成都市| 资阳市| 仙游县| 沽源县| 高碑店市| 阿合奇县| 正宁县| 商城县| 绥芬河市| 怀安县| 思南县| 安吉县| 田阳县| 清苑县| 五莲县| 财经| 九台市| 措勤县| 五大连池市| 涞水县| 广平县| 池州市| 宁海县| 宜兴市|