我有一个包含两个数组的对象,第一个是斜率数组:
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 }
Counts
有没有比用索引遍历 并在 中找到相应索引更好的方法来找到斜坡中的第 i 个项目Slopes
?
编辑:不确定我的问题是否不清楚。我需要能够访问发生的第 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];
}
我想知道是否有更有效的方法?