zoukankan      html  css  js  c++  java
  • 删数字(华为笔试题)

    题目:有一个整型数组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;
    	}
    
    }
    


  • 相关阅读:
    C++中的类模板详细讲述
    IE6
    Active Driectory 操作(转来放起来,不要丢了)
    The length of the query string for this request exceeds the configured maxQueryStringLength value
    试一下用word发布一篇文章
    各种分享api
    汇编语言程序设计 检测点1.1
    Windows下配置使用MemCached
    chrome
    ASP.NET 把集合导出为Excel的一个助手类
  • 原文地址:https://www.cnblogs.com/catgwj/p/7604870.html
Copyright © 2011-2022 走看看