2014-01-13 140 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' 

更多读数: