一个数组,下标从0到n,元素为从0到n的整数。判断其中是否有重复元素

今天终于看懂了这code:

 

int hasDuplicate(int[] a, int n){

      for(int i=0;i<n;++i){

          while(a[i]!=i && a[i]!=-1){

             if(a[a[i]]==-1) return 1;

             a[i]=a[a[i]];

             a[a[i]]=-1;

         }

          if(a[i]==i) {a[i]=-1;}

     }

     return 0;

 }

posted @ 2010-04-01 14:48  一修先生  阅读(681)  评论(1编辑  收藏  举报