循环删除指定索引位置一道面试题算法(2)
2008-12-22 19:25
127 查看
最近再次跟朋友同事一起讨论一次,现在把改进的一些方法与想法实现代码贴出来,参考参考...先做个记录了,大家一起学习了...感觉调整幅度不小,简化了代码,共享学习l...
/** *created by zxb *date 2008-12-22 - 下午07:12:09 *zxb 开源测试项目 test *500人站一圈数到第7的出列,循环反复直到剩下最后一个是谁? *to do TODO **/ package com.suanfa; import java.util.ArrayList; import java.util.List; public class FiveHundred2 { private static final int CYCLE_NODE = 7; // 出列循环人数 就是到第三个点 人数位置 该人出列 private static final int CYCLE_TOTAL_NUMBER = 500; // 循环圈的总人数 public static void main(String[] args) { long l1 = System.currentTimeMillis(); int a = CYCLE_NODE; int t = CYCLE_TOTAL_NUMBER; List<Integer> list = new ArrayList<Integer>(); // 初始化 总人数 for (int i = 1; i <= t; i++) { list.add(i); } list=doCycleList(list, a); for (int i = 0, len = list.size(); i < len; i++) { System.out.println(list.get(i)); } long l2 = System.currentTimeMillis(); System.out.println("程序执行完成花费时间: " + (l2 - l1)); } public static List<Integer> doCycleList(List<Integer> list, int number) { int count = 0; int length = list.size(); while (length > 1) { for (int i = 0; i < length; i++) { // 标记出列数位置 count++; if (count % number == 0) { list.set(i, 0); //出列标志为0 记数是一直往下走 } } for (int i = 0; (length = list.size()) > 0 && i < length; i++) { // 正式出列 if (list.get(i).equals(0)) { list.remove(i); } } } return list; } }
阅读更多
相关文章推荐
- vector如何删除指定索引位置的元素
- 设计实现mini_vector中的插入和删除算法,要求在指定位置插入、删除元素
- javascript 数组两个扩展:查找值的索引位置,删除指定索引位置的成员
- js数组插入指定位置元素,删除指定位置元素,查找指定位置元素算法
- vector如何删除指定索引位置的元素?
- 关于删除指定日志文件的一道面试题
- 【我解C语言面试题系列】010 从相应位置开始删除指定字符串的相应个字符
- 【我解C语言面试题系列】010 从相应位置开始删除指定字符串的相应个字符
- 【链表面试题】删除无头单链表的非尾节点,插入一个元素到无头链表指定位置
- 【链表面试题】删除无头单链表的非尾节点,插入一个元素到无头链表指定位置
- [学习记录]removeObjectAtIndex:删除指定位置的元素
- struts2中删除放置在指定位置的文件
- 关于一道面试题,使用C#实现字符串反转算法
- 一道算法题---把字符串内连续相同字符删除
- Java上传图片到指定位置,删除图片
- 使用 insertBefore 和insertAfter,在指定位置追加与删除元素
- 一道面试题:从一个字符串中找出第一个不重复字符;算法一;
- 字符串循环右移(一道面试题的代码实现)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 【学习总结】循环链表模拟约瑟夫问题和循环链表的初始化、建立、删除(按值与按位置)