У меня есть объект, который содержит два массива, первый - это массив уклонов:
double[] Slopes = new double[capacity];
Следующий - это массив, содержащий количество различных наклонов:
int[] Counts = new int[capacity];
Массивы связаны с тем, что когда я добавляю уклон к объекту, если последний элемент, введенный в массив уклонов, имеет тот же уклон, что и новый элемент, то вместо добавления его в качестве нового элемента счет увеличивается.
т.е. если у меня есть уклоны 15 15 15 12 4 15 15, я получаю:
Slopes = { 15, 12, 4, 15 }
Counts = { 3, 1, 1, 2 }
Есть ли лучший способ найти элемент i_th в уклонах, чем итерация по Counts
с индексом инайти соответствующий индекс в Slopes
?
edit: Не уверен, что, возможно, мой вопрос был неясным.Мне нужно иметь возможность доступа к возникшему уклону i_th, поэтому в примере с нулевым индексированным уклоном i = 3, равным 12, вопрос заключается в том, существует ли более эффективное решение для нахождения соответствующего уклона в новой структуре.
Может быть, это поможет лучше понять вопрос: вот как я теперь получаю элемент i_th:
public double GetSlope(int index)
int countIndex = 0;
int countAccum = 0;
foreach (int count in Counts)
{
countAccum += count;
if (index - countAccum < 0)
{
return Slopes[countIndex];
}
else
{
countIndex++;
}
}
return Slopes[Index];
}
Мне интересно, есть ли более эффективный способ?