2014-01-13 173 views
-9

它看起來像這個函數返回第一個序列號,但你不知道這是這個函數做什麼?

public int w(int[] arr) 
{ 
    int c = 1; 

    for (int i = 1; i < arr.Length; i++) 
    { 
     bool u = true; 

     for (int j = 0; (j < i) && u; j++) 
     { 
      if (arr[i] == arr[j]) 
       u = false; 
     } 

     if (u) 
     { 
      c++; 
     }     
    } 

    return c; 
} 
+2

它計算在陣列中的所有唯一元素。 –

+5

那麼現在人們正在編寫預混淆的代碼? –

+0

看起來像一個模糊的.net程序集的反編譯。 – bansi

回答

1

此函數計算陣列中的所有不同的元素概念。

外層循環遍歷所有數組元素。內部循環遍歷數組,直到外部循環的元素。如果沒有與當前元素類似的前一元素,則計數會遞增。

例如,給定陣列

[1, 2, 3, 4, 3, 1, 5] 

c的值將是

1, 2, 3, 4, 4, 4, 5 

所以結果是5,這是陣列中的不同元件的數量。

+1

不,你的情況中'唯一'元素的數量是4。在你的情況是5. – Abbas

+1

@阿巴斯謝謝,我重新寫道。 –

0

正如Heuster所解釋的,該函數返回數組中不同數量的元素。該函數給出了相同的結果如下LINQ的表達:

var myIntegers = new int[] { 1, 2, 3, 4, 3, 1, 5 }; 
var distinctCount = myIntegers.Distinct().Count(); 
//distinctCount is '5' 

更多讀數: