笔试题
2016-04-08 11:15
260 查看
题目描述
有一个数组a
顺序存放0-N,要求没隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。
输入描述:
每组数据为一行一个整数n(小于等于1000),为数组成员数,如100,则对a[999]进行计算。
输出描述:
一行输出最后一个被删掉的数的原始下标位置。
输入例子:
8
输出例子:
6
有一个数组a
顺序存放0-N,要求没隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。
输入描述:
每组数据为一行一个整数n(小于等于1000),为数组成员数,如100,则对a[999]进行计算。
输出描述:
一行输出最后一个被删掉的数的原始下标位置。
输入例子:
8
输出例子:
6
import java.util.*; public class Main{ public static void main(String[] args){ Scanner scan=new Scanner(System.in); while(scan.hasNext()){ int n=scan.nextInt(); List<Integer> a=new ArrayList<Integer>(); for(int i=0;i<n;i++){ a.add(i); } System.out.println(delNum(a)); } } public static int delNum(List<Integer> a){ int count=1; int delnum=0; while(a.size()!=1){ delnum=0; for(int i=0;i<a.size()+delnum;i++){ if(count==3){ a.remove(i-delnum); delnum++; count=1; } else count++; } } return a.get(0); } }
相关文章推荐
- Windows Dev Intro - D3D11 Pipeline
- require和include的区别
- 138.括号序列(区间型DP)
- 做汉堡,结对2.0
- JS中实现数组和对象的深拷贝和浅拷贝
- SQL语句导入Excel到数据库
- Objective-C Runtime 运行时:Method Swizzling
- 离线配置ubuntu 14.04 web服务环境
- 将dic里的数据写到model里,自动处理null数据
- 欢迎使用CSDN-markdown编辑器
- iOS 数据缓存
- Linux userdel --删除用户账号
- Linux useradd --建立用户账号和用户起始目录
- doxygen注释
- Yii2使用beforeLogout事件更新用户登录信息
- sort() , sorted() 与argsort()
- 线性判别分析(Linear Discriminant Analysis,LDA)
- 省市区三级下拉选择器
- sql trim
- win server 2008 R2 域控制器安装