zoukankan      html  css  js  c++  java
  • 华为机试4[编程题] 删数

    [编程题] 删数
    有一个数组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]进行计算。

    输出描述:
    一行输出最后一个被删掉的数的原始下标位置。
    输入例子:
    8
    输出例子:
    6

    思路:


    import java.util.*;
    public class Main{
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            do{
                int n = sc.nextInt();
                int[] arr = new int[n];
                for(int i=0;i<n;i++)
                    arr[i] = i;
            
                final int DELFLAG = n + 1; // 删除标志位  
                int currentSize = n; // 记录数组当前有效长度(即未被置为删除标志的元素个数),最后变为 0  
                final int STEP = 2; // 步长  
                int count = 0; // 步长计数  
                int lastDelIndex = 0; // 记录最后被删除的元素的下标  
                int i = 0; // 循环下标  
      
                while (currentSize != 0) {  
                    if (arr[i] != DELFLAG) { // 判读当前元素是否等于删除标志  
                        if (count++ == STEP) { // 当步长计数满足步长则  
                            arr[i] = DELFLAG; // 将元素置为删除标志位  
                            lastDelIndex = i; // 记录该处下标  
                            currentSize--; // 有效数组长度减 1  
                            count = 0; // 步长计数归零  
                        //System.out.println("Deleted index is " + i % n);  
                    }  
                }  
                    i = (i + 1) % n; // 下标取余实现循环下标  
            }  
                System.out.println(lastDelIndex); 
            }while(sc.hasNext());
            
            
        }
    }
  • 相关阅读:
    Webpack-simple cross-env 不是内部或外部命令问题处理
    Webstorm快捷键整理
    Maven导入ojdbc14.jar和ojdbc6.jar
    spring配置datasource三种方式 数据库连接池
    oracle存储过程中使用execute immediate执行sql报ora-01031权限不足的问题
    Java String内存释放
    Sublime Text 3 添加到右键菜单
    Oracle date 和 timestamp 区别
    查看JVM内存使用情况
    bzoj1513【POI2006】Tet-Tetris 3D
  • 原文地址:https://www.cnblogs.com/weimiaomiao/p/5770467.html
Copyright © 2011-2022 走看看