删数字(华为笔试题)
来源:互联网 发布:淘宝怎么看是不是假货 编辑:程序博客网 时间:2024/05/21 22:36
题目:有一个整型数组a[n]顺序存放0 ~ n-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。
以 8 个数(n=8)为例:{0,1,2,3,4,5,6,7},
0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。
java版本的实现:
package cn.cat.test;import java.util.Iterator;import java.util.LinkedList;public class Test30 {/** 删数字(华为笔试题) * @Description: * @author gwj * @Created 2017年9月18日 上午11:14:47 * @param args */public static void main(String[] args) {LinkedList<Integer> list = new LinkedList<Integer>();for (int i = 0; i < 8; i++) {list.add(i);}//方法返回的是最后删除的数值,链表数据的下标和存储的数值是一样的,故最后删除的数值就是原来的索引下标。int lastVal = remove(list, 2);System.out.println("最后个被删除的索引下标为: " + lastVal);}static int remove(LinkedList<Integer> list, int intervalIndex) {Iterator<Integer> iterator = list.iterator();int loopCount = 0;int lastVal = -1;while (iterator.hasNext()) {lastVal = iterator.next();if (loopCount != 0 && (loopCount % intervalIndex == 0)) {iterator.remove();}loopCount++;}if (list.size() > 0 && (list.size() % intervalIndex == 0)) {return remove(list, intervalIndex);}//返回最后个数值。return lastVal;}}
阅读全文
0 0
- 删数字(华为笔试题)
- 华为笔试题(一)
- 华为笔试题(二)
- 华为笔试题(1)
- 华为笔试题(全)
- 华为笔试题(一)
- 华为笔试题(二)
- 华为笔试题(1)
- 华为笔试题(2)
- 华为笔试题(3)
- 华为笔试题(4)
- 华为笔试题(5)
- 华为笔试题(6)
- 华为笔试题(7)
- 华为笔试题(8)
- 华为笔试题(9)
- 华为Java笔试题笔试
- 将10进制数字转化为26进制用A-Z来表示(华为笔试题第二题)
- 进程同步方法
- 8761
- 【边双连通 && 加几条边变成边双连通】POJ
- 一、SpringMVC基础入门,创建一个HelloWorld程序
- div/span强制不换行
- 删数字(华为笔试题)
- 浮动造成的影响
- ftp服务搭建详解
- 2017 找工作的经历,给求职小伙伴的一些建议
- jar打包成dll(C#调用java代码)
- python pip
- 简易菜单界面
- ASIC/SoC验证
- Hibernate之树状结构设计