front的第二种更新表达式
波波老师更新front的方法:front = front == 0 ? data.length - 1 : front - 1;
我更新front的方法:front = (front + data.length - 1) % data.length;
请问我这种方法可以么?我自己验证是对的
正在回答
如果front - 1 >0 0, front % data.length == front ,front可以指向正确的位置。
如果front == 0, front - 1 = -1 , -1 % data.length = -1, -1不是一个合法的索引。因此需要把front转换到正确的位置。
只有求-1的同余数就可以了-1 的同余数为 -1 + data.length
front + data.length -1的意思就是找出 -1的同余数。
如果使用的是python语言,就不存在这个问题因为python的%是取模运算,-1取模data.length相当于data.length - 1可以得到正确的结果,java %是取余运算-1取余data.length 结果为-1
参考:https://blog.csdn.net/gao_zhennan/article/details/72312696
如果front - 1 >0 0, front % data.length == front ,front可以指向正确的位置。
如果front == 0, front - 1 = -1 , -1 % data.length = -1, -1不是一个合法的索引。因此需要把front转换到正确的位置。
只有求-1的同余数就可以了-1 的同余数为 -1 + data.length
front + data.length -1的意思就是找出 -1的同余数。
如果使用的是python语言,就不存在这个问题因为python的%是取模运算,-1取模data.length相当于data.length - 1可以得到正确的结果,java %是取余运算-1取余data.length 结果为-1
参考:https://blog.csdn.net/gao_zhennan/article/details/72312696
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星