阵列中的位置(偏移量)c#
我有一个无法有效解决的问题。 我需要做的是: 我在数组中有一个起始位置(在我的例子中是list),我还有一个偏移量。 int类型的偏移量: 当偏移量>0时,我有此项来计算新位置:阵列中的位置(偏移量)c#,c#,arrays,position,offset,C#,Arrays,Position,Offset,我有一个无法有效解决的问题。 我需要做的是: 我在数组中有一个起始位置(在我的例子中是list),我还有一个偏移量。 int类型的偏移量: 当偏移量>0时,我有此项来计算新位置: if (currentPosition + offset < lenght) { return currentPosition + offset; } return (currentPosition + offset)%le
if (currentPosition + offset < lenght)
{
return currentPosition + offset;
}
return (currentPosition + offset)%lenght;
if(当前位置+偏移<长度)
{
返回当前位置+偏移量;
}
返回(当前位置+偏移量)%长度;
问题在于偏移量<0时:
for (int i = 0; i < offset * -1; i++)
{
currentPosition -= 1;
if (currentPosition == -1)
{
currentPosition = lenght - 1;
}
}
return currentPosition;
for(int i=0;i
但是这个解决方案真的很慢。
你们有什么想法吗。
提前谢谢。看起来
currentPosition
是一个整数。因此,您可以只进行计算,如果小于零,则随后进行校正
currentPosition = (currentPosition + offset) % lenght;
if (currentPosition<0)
currentPosition += lenght;
return currentPosition;
currentPosition=(currentPosition+offset)%length;
如果(currentPosition,它看起来像是一个整数。因此,您可以只进行计算,如果小于零,则随后进行校正
currentPosition = (currentPosition + offset) % lenght;
if (currentPosition<0)
currentPosition += lenght;
return currentPosition;
currentPosition=(currentPosition+offset)%length;
如果(currentPosition我已经想出了这个函数,希望它有帮助(为了清晰起见,在代码注释中添加):
希望有帮助。我已经想出了这个函数,希望它有帮助(为了清晰起见在代码注释中添加):
希望对你有所帮助。
(A) 0
(A)0var pos1 = CalcNewPosition(arr, 3, 2);
var pos2 = CalcNewPosition(arr, 3, -1);
var pos3 = CalcNewPosition(arr, 3, -56);
position = (position + offset + length) % length;
position = (position + (offset % length) + length) % length;