二、面试需要的基础知识
数据结构
数组
- 数组占据一块连续的内存并按照顺序存储数据
- 创建过程:
- 指定容量大小
- 根据大小分配内存
- 缺点:即使只存储一个数字,也要为所有数据预先分配内存,导致空间效率不是很好,经常有空闲的区域没有得到充分利用
- 优点:时间效率很高
- 数组中的内存是连续的,可以根据下标在O(1)时间读写
- 可以用数组实现简单的哈希表
- 数组中的内存是连续的,可以根据下标在O(1)时间读写
面试题:二维数组中的查找
- 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数。
- 分析:应该从右上角开始比较,这样可以最先排除一些数据!
- 解答:
def find(matrix, number): found = False for rows in matrix: rows[-1]
字符串
- C/C++中每个字符串都以’\0’作为结尾,这样就能很方便的找到字符串的最后尾部。
- 字符串的内容是不会改变的
- 修改string的内容,是生成一个新的string,新的实例
面试题
- 题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。
- 分析:把从前向后替换改成从后向前替换,时间复杂度为O(n)