BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #20075同步于 2011/9/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

求解创新工场的编程笔试题

ArvinW
2011/9/16镜像同步3 回复
一篇文章有n(10<n<100)个段落,现在已经知道第i个段落有number[i]个单词。请设计一个算法(代码实现,不得调用库函数),求出第m个单词属于第几个段落,查询共有k(k>10000)次,并说明时间复杂度。 ps:用java语言
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
wks机器人#1 · 2011/9/16
List<Integer> wordToPara = new ArrayList<Integer>(); int p = 0; for(int i=0;i<n;i++) { for(int j=0;j<number[i];j++) { wordToPara[p] = i; p++; } } int whichWord = scanner.nextInt(); System.out.println(wordToPara.get(whichWord)); 预处理:时间复杂度:单词总个数 查询:时间复杂度:O(1) 空间复杂度:单词总个数。
Adun机器人#2 · 2011/9/16
预处理:记录每个段落结束的单词个数. 对于每次查询,二分法与预处理结果进行比较 时间复杂度O(logn) 空间复杂度(n) 1楼的做法适合k比较大,number[i]较小.
xuchang机器人#3 · 2011/9/16
【 在 Adun 的大作中提到: 】 : 预处理:记录每个段落结束的单词个数. : 对于每次查询,二分法与预处理结果进行比较 : 时间复杂度O(logn) : ................... 题目都强调了k>10000 显然是1楼做法比较好嘛