我有一个数组,我想向后滚动其中的位置。
我有一个布尔数组,我需要计算给定单元格向前和向后有多少个真值。
我知道如果 N 是数组中的元素数,我可以继续执行 i=(i+1)%N。但是如果我需要以相反的方式滚动它怎么办?
先感谢您。
我有一个数组,我想向后滚动其中的位置。
我有一个布尔数组,我需要计算给定单元格向前和向后有多少个真值。
我知道如果 N 是数组中的元素数,我可以继续执行 i=(i+1)%N。但是如果我需要以相反的方式滚动它怎么办?
先感谢您。
我通常i = (i - 1 + N) % N
用来防止负值。
这应该这样做:
i--;
if (i == -1)
i = N-1;
或在 1 行中:
i = ((i-1 == -1) ? N-1 : i-1);
但上述噪声的变化可能更好。一个相关的 if 语句版本:
if (i == 0)
i = N-1;
else
i--;
相关的 1 行版本:
i = (i == 0 ? N-1 : i-1)
怎么样i = (i == 0 ? N : i) - 1
?
int newRightShiftIndex = (curIndex + numOfPositions)%size;
int newLeftShiftIndex = (curIndex +(size-(numOfPositions%size)))%size;