从dynamic数组中find唯一的整数和

我面临一个非常困难的情况,假设我有一系列dynamic数字。 条件是数组可能包含10个数字到20个数字。 它可以包含10,12,14,…到20个整数。 现在基于ArrayList.Count(),我将select3(如果数组包含10个整数)到6(如果数组包含20个整数)数字,并添加这些数字。 说这个数字是“X”。

现在我要检查列表中是否有三个整数和X相等,如果相等,那么我必须重复相同的程序,直到从列表中find一个唯一的和。

那我该怎么做呢? 最好的部分是数组中的所有数字都是唯一的,数组中没有重复的数字。

第一个想法

我虽然有一个想法,3个数字,假设我生成一个唯一的数字。

foreach (var i in List) // values of i = 1, 5, 8 (Assume) { sum += listOfUniqueIntegers[i]; } 

//将第一个元素固定为List [i]

 for (int i = 0; i < List.Count()-2; i++) { // Fix the second element as List[j] for (int j = i+1; j < List.Count()-1; j++) { // Now look for the third number for (int k = j+1; k < List.Count(); k++) { if (List[i] + List[j] + List[k] == sum) { // Here I will again create one more unique value // and assign it to sum and repeat i = 0, j = 0, k = 0; } } } } 

但是这个方法的问题在于它的时间复杂度,所以如果我必须在列表大小为20时从6个数字中生成一个总和,那么它将是n ^ 6,这是不期望的。

第二个想法

我虽然可以对列表进行sorting,但是我可以使用什么逻辑来select3个整数,以便列表中的和是唯一的。

可以说,我sorting列表,并select三个最小的数字或从sorting列表中select第3 3 + 1 =第4和3 + 2 =第5个元素, sum=List[3]+List[4]+List[5]; 这也没有预料到,任何模式select三个数字是不build议的。 应该随机select,总和应该是唯一的。

所以我没有任何想法为此产生最佳解决scheme。

任何人都可以帮助我吗?

只用3个最大的数字。