我有一个数组,我想向后滚动它的位置。
我有一个布尔数组,我需要计算一个给定单元格向前和向后的真实数量。
我知道如果N是数组中元素的数量,我可以继续做i =(i + 1)%N。 但是,如果我需要以相反的方式滚动它呢?
提前谢谢。
答案 0 :(得分:6)
我通常使用i = (i - 1 + N) % N
来防止负值。
答案 1 :(得分:1)
应该这样做:
i--;
if (i == -1)
i = N-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)
答案 2 :(得分:1)
i = (i == 0 ? N : i) - 1
怎么样?
答案 3 :(得分:1)
int newRightShiftIndex = (curIndex + numOfPositions)%size;
int newLeftShiftIndex = (curIndex +(size-(numOfPositions%size)))%size;