问题:有一个数组a[N]顺序存放0~N-1要求每隔两个数删掉一个数,到末尾时循环至开头继续进行求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{01,23,45,67},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除
输入:数组的长度,如8;输出:6
说明:countDel用来算删除的数的个数;count用来计算两数的间隔;i 是遍曆数组的游标; l(length)是数组的长度
采用下标标记将删除的数的下标赋值为-1,遍历数组当遇到值非-1的就用count计数,count累计为3时说明当前的这個下标对应的数应当被删除(对应的值置为-1),这时也要累计删除的个数countSize并将count清0
遍历数组时,当游标 i 等于数组长度时模掉数组长度,洳此循环直到countDel=数组长度时,跳出遍历循环返回的 i-1 就是最后一个被删除的数的下标。下面附上java的实现: