题目描述:
有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开
头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例: {0,1, 2, 3, 4, 5, 6, 7},0->1->2(删除)->3->4->5<(删除)->6->7->0(删除),如此循环直到最后一个数被删除。
输入描述:
每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。
输出描述:
一行输出最后一个被删掉的数的原始下标位置。
示例1 输入输出示例仅供调试, 后台判题数据一般不包含示例
输入
8
输出
6
解题思路:
使用队列;首先将数组里面的元素全部放到队列中,在队列长度不等于1的前提下进行循环操作:定义一个计数器count,每一次把队首元素添加到队尾,出一次,count++一下,当count为2时,直接将队首元素出队即可。最后剩下的一个元素就是最后删除的一个元素。
代码实现:
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args)

博客探讨了一个数组隔位删除的问题,即从0到N-1的数组每隔两个数删除一个,直至只剩一个数。文章提供了输入输出描述、示例以及解题思路,通过使用队列来解决该问题。解题方法包括将数组元素放入队列,循环操作时将队首元素移到队尾并计数,当计数达到2时删除队首元素,最终保留的元素即为最后删除的原始下标。
最低0.47元/天 解锁文章
747





