发表时间:2010-10-18
一、 1、设计一个栈的结构,要求实现一个min函数,返回栈中最小的元素。要求min、push和pop操作都必须是O(1)的时间复杂度,简单描述思想。 2.、(1)输出下面程序的前7行并且说明数列表示的含义 (2)下面的程序是否存在安全隐患?原因是? #include<stdio.h> #include<string.h> const int MAX = 128; const int LEN = 20; int main(){ char str[MAX]="1"; char tem_str[MAX]=""; char buf[MAX]=""; printf("%s\n",str); int i; for(int line=1;line<=LEN;line++){ strcpy(tem_str,str); str[0]='\0'; for(i=0;tem_str[i]!=0;++i){ char ch=tem_str[i]; int count = 1; for(;tem_str[i+1]==tem_str[i];++i) count++; sprintf(buf,"%d%c",count,ch); strcat(str,buf); } printf("%s\n",str); } return 0; } 3、分析线性表、二叉平衡树和哈希表在存储数据的时候,各有什么优劣? 二、 1、有一串首尾相连的珠子,共有m个,每一个珠子有一种颜色,并且颜色的总数不超过n(n<=10),求连续的珠子的颜色总数为n时,长度最小的区间。可简述思路或者给出伪代码,并且给出时间和空间复杂度分析。 2、实现函数strnumcmp,和strcmp类式,不过有一点区别是在字符串包含数字的地方,按照数字的大小进行排序。比如 abc<abc#<abc1<abc2<abc10<abcd 而正常的顺序为 abc<abc#<abc1<abc10<abc2<abcd 请实现strnumcmp,给出完整代码。要求简单、明确。 三、 大规模的字典中,需要词与此中间的搭配关系。 (1) 字典中的项为辞与词之间的搭配,比如两个词“今天”和“晚上”有两个搭配,今天|晚上 和晚上|今天。 (2) 字典的规模为10W数量级。 (3) 每一个词,最多能和其他1W左右的词进行搭配。 (4) 这个系统中有大量的读操作,大约每秒1000次,但是很少有写操作。 设计一个字典服务系统,能够满足上述的要求,并且给出占用的资源,最后估算出需要的机器资源。 |
|
发表时间:2010-10-19
第一题不是很著名的google的面试题么。
百度现在连笔试题也开始抄google啦,真是好传统啊。。。 |
|
发表时间:2010-10-19
请LZ应聘的是什么职位?
|
|
发表时间:2010-10-19
1、设计一个栈的结构,要求实现一个min函数,返回栈中最小的元素。要求min、push和pop操作都必须是O(1)的时间复杂度,简单描述思想。
public class MyStack { private int[] inArray = new int[10]; private int[] minArray = new int[10]; private int count = 0; public int min() { return minArray[count-1]; } public void push(int i) { // 当count超出范围的时候自动扩充数组大小,不写了 inArray[count] = i; if (count == 0 || minArray[count - 1] >= i) minArray[count] = i; else minArray[count] = minArray[count - 1]; count++; } public int pop() { return inArray[count---1]; } } |
|
发表时间:2010-10-19
用链表,再维护一个min变量
|
|
发表时间:2010-10-19
javazeke 写道 用链表,再维护一个min变量
正解。 优 劣 线性表 遍历数据 不同内部结构的线性表优劣不同 二叉平衡树 搜索数据 增删元素耗时 哈希表 索引数据 耗费空间 |
|
发表时间:2010-10-19
1、有一串首尾相连的珠子,共有m个,每一个珠子有一种颜色,并且颜色的总数不超过n(n<=10),求连续的珠子的颜色总数为n时,长度最小的区间。可简述思路或者给出伪代码,并且给出时间和空间复杂度分析。
public class Test { /** * 思路(想象这是贪吃蛇,头部向前吃豆): * 1.向右吃豆,直到豆的类型总数为n时,拉掉多余的豆,这是第一个解。 * 2.继续吃豆,每吃一颗,拉掉多余的豆,比较一下解,直到结束。 * (一次遍历,时间复杂度O(n),需要储存每一颗豆的颜色,空间复杂度O(n)) */ public Map<Integer, Integer> map = new HashMap<Integer, Integer>(); public int[] shake; public int index = 0; public int minSize = Integer.MAX_VALUE; public Test(int m, int n, int[] beans) { shake = new int[m]; for (int i = 0; i < beans.length; i++) { eatBean(i, n, beans); } } // 吃豆子 private void eatBean(int i, int n, int[] beans) { shake[i] = beans[i]; map.put(shake[i], map.get(shake[i]) == null ? 1 : map.get(shake[i]) + 1); // 满足豆的种类总数为n if (map.size() == n) { while (map.get(shake[index]) > 1) { popBean(); } minSize = i - index + 1 < minSize ? i - index + 1 : minSize; } } // 拉豆子 private void popBean() { map.put(shake[index], map.get(shake[index]) - 1); index++; } public static void main(String[] args) { int[] ints = new int[] { 0, 1, 2, 3, 2, 1, 3, 3, 3, 4 }; Test test = new Test(10, 5, ints); System.out.println(test.minSize); } } |
|
发表时间:2010-10-19
orz这不是商务部的java题吧。。
java题20多页呢-。- |
|
发表时间:2010-10-19
on-the-way 写道 请LZ应聘的是什么职位?
我打酱油的,这是转自校内的 |
|
发表时间:2010-10-19
reilost 写道 orz这不是商务部的java题吧。。
java题20多页呢-。- 看示例代码,应该是考C的吧 |