麒麟远创面试题1:随机播放CD

原创 2011年01月11日 16:10:00

题目要求:一个CD机,有一个专门存放CD的CD仓。现在,CD仓中存有n张CD,要求这个CD机可以随机播放这n张CD一次,即要保证每张CD都会播放一次且仅播放一次

 

      在面试之前上网查过麒麟的面试题,其中有这道题,但是当时没在意,也没有仔细想如何做。面试的时候,想到了一个算法,基于分治算法,应该可以很好的解决这个问题。

      算法思想:把cd仓看成是一个大小为n的数组a,题目的要求是随机访问a中n个元素一次且仅一次。可以基于分治法将这个问题划分成两个子问题,解决完子问题后再合并子问题。划分子问题如下:

      1. 随机的访问a中的一个元素a[k],k是随机的。

      2. 随机访问a[0..k-1]中的元素一次且仅一次。

      3. 随机访问a[k+1..n-1]中的元素一次且仅一次。

      这样该问题以及子问题可以采用相同的算法实现,可以通过递归完成。这里,又对这个算法进行了抽象、封装,可以让使用的更方便,复用性更强。采用模板方法模式设计了RandomAccessOnce类,使用者需要继承这个类,实现visit方法,定制实现元素的访问方法。

      可以看出这个算法的递归方程:f(n)=f(k)+f(n-k-1)+1,通过《算法导论》上介绍的递归式解法,可知算法时间复杂度是O(n)。面试时,稀里糊涂的说了个O(nlgn),更搞笑的是当时根本没有反应过来,结果过了几天早上突然梦中惊醒才发现了这个错误。不然麒麟远创的offer应该可以更高(面试时犯了两个时间复杂度的错误)。

版权声明:本文为博主原创文章,未经博主允许不得转载。

中兴软创笔试前的一些准备

【练习1】 1、try{ a+=4; return 1; }catch(Exception e){ e.printStackTrace(); return -1; }finally{ ...
  • u013889753
  • u013889753
  • 2014年03月22日 14:27
  • 2001

为优麒麟打call,18.04LTS将迎来新起点!

随着17.10发布活动的结束,优麒麟(Ubuntu Kylin)团队加快进入下一个长线支持版本18.04的研发周期。自2013 年 4 月首次发布以来,优麒麟已经发布10个版本,得到了全球尤其是中国用...
  • kylinos_123
  • kylinos_123
  • 2017年11月30日 17:06
  • 34

龙芯麒麟操作系统安装 PostgreSql

1 PostgreSQL 9.2.7 https://ftp.postgresql.org/pub/source/v9.2.7/postgresql-9.2.7.tar.bz2 下载 ...
  • antony1776
  • antony1776
  • 2016年06月23日 16:15
  • 954

在虚拟机上搭建中标麒麟Neokylin6桌面版开发环境

首先,到这里
  • dijkstar
  • dijkstar
  • 2014年09月14日 14:02
  • 9606

中标麒麟安装oracle11g的详细步骤

关于心态: 这是一个非常纠结的问题,你需要有一定的心里承受能力。因为安装过程中你会遇到千奇百怪的难题,你可能独立解决掉某些问题,但个别问题有时候会成为安装过程中的一道坎,于是你请教了你的同事、领导、...
  • fifabutt
  • fifabutt
  • 2014年01月06日 14:35
  • 3204

U盘安装优麒麟(ubuntukylin)系统方法

最近准备将U盘做成优麒麟系统的安装盘,从官网上下载了“ubuntukylin-14.10-desktop-i386.iso”光盘文件,同时优麒麟官网上推荐的Win32DiskImager软件进行U盘启...
  • hqj_email
  • hqj_email
  • 2015年06月22日 19:50
  • 4890

麒麟开源堡垒机维护手册

1 用户手册概述 本手册为堡垒机运维系统维护手册,适用于没有任何堡垒机使用经验的用户。本手册假设阅读者拥有堡垒机的全部权限。 1.1 如何阅读本手册 如果已经有过堡垒机使用经验,可选取您感兴趣的...
  • linziyuan008
  • linziyuan008
  • 2016年06月17日 13:39
  • 1011

在WIN8 服务器系统安装oracle 虚拟机(中标麒麟操作系统)设置共享文件夹

1、安装中标麒麟操作系统后,进入卡虚拟机系统安装,点击设备---》安装增强功能 2、安装完成后,重启虚拟系统,桌面上会有一个光盘图标 3、打开虚拟系统的终端使用su命令进入root权限,此时要...
  • rongyong
  • rongyong
  • 2015年03月25日 12:49
  • 1626

大数据分析界的“神兽”Apache Kylin有多牛?

http://www.tuicool.com/m/articles/Yjm6bq7本文是5月23日大数据杂谈群分享的内容。关注“大数据杂谈”公众号,点击“加群学习”,更多大牛一手技术分享等着你。实习编...
  • bluejoe2000
  • bluejoe2000
  • 2016年07月24日 17:50
  • 3885

第一节 麒麟系统安装+基础环境搭建(JDK+Scala)

本文重点对没有Linux基础的人员提供快速上手的指导,如果你的开发环境已经搭建好,可以略过本章所讲内容,内容来源于网络,也谢谢这些默默讲自己经验分享的人!最近在学习大数据,有喜欢的朋友可以一起研究。...
  • fwj380891124
  • fwj380891124
  • 2016年01月03日 01:29
  • 2600
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:麒麟远创面试题1:随机播放CD
举报原因:
原因补充:

(最多只允许输入30个字)