数组、字符串、链表、树面试题汇总
2013-06-26 20:57
399 查看
数组
1. 如何用递归实现数组求和
2. 如何用一个for打印出一个二维数组
A[count/col][count%col]
3. 在顺序表中插入和删除一个节点平均移动多少个节点
插入:(0+n)/2
删除:(0+n-1)/2
4. 如何用递归算法判断一个数组是否是递增?
Bool up(int a[],int beg,int end)
{
If(beg >end)
Returnfalse;
If(beg ==end)
Returntrue;
Return a[beg]<a[beg+1]&& up(a,beg+1,end);
}
Or
Bool up(int a[],int len)
{
If(len <1)
Returnfalse;
If(len == 1)
Returntrue;
Return a[len-1]>a[len-2]&& up(a,n-1);
}
5. 递归和非递归实现二分查找
6. 如何在排序数组中,找出给定数字出现的次数
二分查找基础上修改。当a[mid]==K时,right=mid-1,继续向左查找,直到最左;
同理向右查找,知道最右。两者相减+1得到次数,O(logn)
7. 如何计算两个有序整形数组的交集。
长度相当:类似于归并,两个指针。
长度悬殊:短的在长的中折半查找
8. 如何找出数组中重复次数最多的数
有序:O(n)遍历即可
无序:空间换时间,hash_map,遍历次数找最大。
9. 如何在O(n)时间内找出数组中出现次数超过了一半的数。
1, Hash
2, Counter=1;num=a[0]。下一个数==num,counter++,否则counter--,counter==0时,num=next数
10. 如何找出数组中唯一的重复元素
异或
位图法:需知道数的范围,确定空间大小
11. 如何判断一个数组中的数值是否连续相邻
12. 如何找出数组中出现奇数次的元素
异或
扩展:两个奇数次,三个奇数次的数如何求?
13. 如何找出数列中符合条件的数对的个数
14. 如何寻找出数列中缺失的数
For sum求和-(1+n)n/2
15. 如何判定数组是否存在重复元素
1. 排序
2. 位图
16. 如何重新排列数组使数组左边为奇数,右边为偶数
同计算有序数组中求两节点使和为N,前后指针
17. 如何把一个整形数组中重复的数字去掉
排序;然后两个指针,一个toreplace,一个遍历cursor,初始都为0,当cursor不等于前一个,将cursor写入toplace,两个指针都+1;否则为重复的,只cursor++
18. 如何找出一个数组中第二大的数
最大、二大两个变量,便利一遍即可。是topK问题维护k个数数组的特殊情况。
19. 如何寻找数组中最大和最小值
1, 一般2n次比较
2, 两两组合比较,最大和max比较,最小和min比较,将为1.5N比较
20. 如何将数组后面M个数移动为前面M个数
左旋、右旋问题,三次逆序即可
21. 如何计算出序列的前N项数据
多个数组,每次选取最小的,然后该数组计算下一个元素
22. 判断一个整数是否可以表示成N个连续正整数的和
/article/2365613.html
第26题
链表:
1. 如何使用链表头
2. 如何找出链表倒数第K个元素
3. 单链表反转
4. 如何寻找单链表的中间节点
5. 如何进行单链表的排序
冒泡、归并、快排
6. 如何实现单链表交换任意两个元素(不包括表头)
7. 如何检测一个较大的单链表是否有环?环的入口点
8. 判断两个单链表(无环)是否交叉
9. 如何删除单链表中的重复节点
Hash_map
10. 如何合并两个有序链表(非交叉)
归并排序的Merge过程
字符串:
1. 字符串逆序
2. 如何找出一个字符串中第一个只出现一次的字符:
Hash,因为时字符,范围确定
3. 如何输出字符串的所有组合
递归
4. 如何检查字符是否是整数
Isdigit(char c)
二叉树:
1. 递归非递归遍历各种遍历二叉树
2. 已知先序遍历和中序遍历,求后续遍历结果
递归建树,递归遍历
知道先序和后续是无法确定树的
3. 如何递归非递归求二叉树的深度
只说非递归的:
1. 先序非递归遍历,节点中加入深度,子树入栈深度加1,到叶子节点和max比较
2. 层次遍历
4. 如何判断两棵树是否相等
子树对称情况
5. 如何判断二叉树是否是平衡二叉树
/article/2365615.html第60题
6. 霍夫曼编码
1. 如何用递归实现数组求和
2. 如何用一个for打印出一个二维数组
A[count/col][count%col]
3. 在顺序表中插入和删除一个节点平均移动多少个节点
插入:(0+n)/2
删除:(0+n-1)/2
4. 如何用递归算法判断一个数组是否是递增?
Bool up(int a[],int beg,int end)
{
If(beg >end)
Returnfalse;
If(beg ==end)
Returntrue;
Return a[beg]<a[beg+1]&& up(a,beg+1,end);
}
Or
Bool up(int a[],int len)
{
If(len <1)
Returnfalse;
If(len == 1)
Returntrue;
Return a[len-1]>a[len-2]&& up(a,n-1);
}
5. 递归和非递归实现二分查找
6. 如何在排序数组中,找出给定数字出现的次数
二分查找基础上修改。当a[mid]==K时,right=mid-1,继续向左查找,直到最左;
同理向右查找,知道最右。两者相减+1得到次数,O(logn)
7. 如何计算两个有序整形数组的交集。
长度相当:类似于归并,两个指针。
长度悬殊:短的在长的中折半查找
8. 如何找出数组中重复次数最多的数
有序:O(n)遍历即可
无序:空间换时间,hash_map,遍历次数找最大。
9. 如何在O(n)时间内找出数组中出现次数超过了一半的数。
1, Hash
2, Counter=1;num=a[0]。下一个数==num,counter++,否则counter--,counter==0时,num=next数
10. 如何找出数组中唯一的重复元素
异或
位图法:需知道数的范围,确定空间大小
11. 如何判断一个数组中的数值是否连续相邻
12. 如何找出数组中出现奇数次的元素
异或
扩展:两个奇数次,三个奇数次的数如何求?
13. 如何找出数列中符合条件的数对的个数
14. 如何寻找出数列中缺失的数
For sum求和-(1+n)n/2
15. 如何判定数组是否存在重复元素
1. 排序
2. 位图
16. 如何重新排列数组使数组左边为奇数,右边为偶数
同计算有序数组中求两节点使和为N,前后指针
17. 如何把一个整形数组中重复的数字去掉
排序;然后两个指针,一个toreplace,一个遍历cursor,初始都为0,当cursor不等于前一个,将cursor写入toplace,两个指针都+1;否则为重复的,只cursor++
18. 如何找出一个数组中第二大的数
最大、二大两个变量,便利一遍即可。是topK问题维护k个数数组的特殊情况。
19. 如何寻找数组中最大和最小值
1, 一般2n次比较
2, 两两组合比较,最大和max比较,最小和min比较,将为1.5N比较
20. 如何将数组后面M个数移动为前面M个数
左旋、右旋问题,三次逆序即可
21. 如何计算出序列的前N项数据
多个数组,每次选取最小的,然后该数组计算下一个元素
22. 判断一个整数是否可以表示成N个连续正整数的和
/article/2365613.html
第26题
链表:
1. 如何使用链表头
2. 如何找出链表倒数第K个元素
3. 单链表反转
4. 如何寻找单链表的中间节点
5. 如何进行单链表的排序
冒泡、归并、快排
6. 如何实现单链表交换任意两个元素(不包括表头)
7. 如何检测一个较大的单链表是否有环?环的入口点
8. 判断两个单链表(无环)是否交叉
9. 如何删除单链表中的重复节点
Hash_map
10. 如何合并两个有序链表(非交叉)
归并排序的Merge过程
字符串:
1. 字符串逆序
2. 如何找出一个字符串中第一个只出现一次的字符:
Hash,因为时字符,范围确定
3. 如何输出字符串的所有组合
递归
4. 如何检查字符是否是整数
Isdigit(char c)
二叉树:
1. 递归非递归遍历各种遍历二叉树
2. 已知先序遍历和中序遍历,求后续遍历结果
递归建树,递归遍历
知道先序和后续是无法确定树的
3. 如何递归非递归求二叉树的深度
只说非递归的:
1. 先序非递归遍历,节点中加入深度,子树入栈深度加1,到叶子节点和max比较
2. 层次遍历
4. 如何判断两棵树是否相等
子树对称情况
5. 如何判断二叉树是否是平衡二叉树
/article/2365615.html第60题
6. 霍夫曼编码
相关文章推荐
- 面试题--字符串指针与字符串数组的区别char* st="abc;与char* str[]="abc";的异同
- 面试题:数组有没有length()方法? 字符串有没有length()方法? 集合有没有length()方法?
- 关于数组,字符串的几道面试题和算法题
- [分类整理IV]微软等100题系列V0.1版:字符串+数组面试题集锦
- php的数组与字符串的转换函数整理汇总
- 单链表面试题汇总(1)
- 数据结构之链表面试题汇总(一)--查找单向链表的中间节点、倒数第K个节点
- php的数组与字符串的转换函数整理汇总
- [分类整理IV]微软等100题系列V0.1版:字符串+数组面试题集锦
- 面试之路(8)-BAT面试题之数组和链表的区别
- 剑指Offer面试题37两个链表的第一个公共结点,面试题38数字在排序数组中出现的次数
- 数据结构之链表面试题汇总(二)-有序单向链表的合并、单向链表反转
- javascript字符串与数组转换汇总
- 字符串/数组面试题
- [分类整理IV]微软等100题系列V0.1版:字符串+数组面试题集锦
- {希尔排序、快速排序、动态数组、单链表、字符串转整型}大综合
- 数组、链表、字符串错题集锦
- 数据结构之链表面试题汇总(三)判断单链表是否有环、取出环的起始点、得到有环链表中环的长度
- [分类整理IV]微软等100题系列V0.1版:字符串+数组面试题集锦
- 面试题:数组有没有length()方法? 字符串有没有length()方法? 集合有没有length()方法?