有一个数组a[NJ顺序存放0~N-1,要求每隔两个数删掉一个数, 到末尾时循环至开 头继续进行,求最后- -个被删掉的数的原始下标位置。以8个数(N=7)为例: {0, 1, 2, 3, 4, 5,

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述
有一个数组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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值