时间复杂度的计算方式(Master公式计算递归函数的时间复杂度)
红黑树的了解(平衡树,二叉搜索树),使用场景
红黑树在STL上的应用
贪心算法和动态规划的区别
判断一个链表是否有环,如何找到这个环的起点
实现一个strcpy函数(或者memcpy),如果内存可能重叠呢
实现一个循环队列
排序算法(写快排,归并排序,堆排序),算法的时间复杂度,空间复杂度,是否稳定等
快排存在的问题,如何优化
反转一个链表
Top K问题(可以采取的方法有哪些,各自优点?)
Bitmap的使用,存储和插入方法
二叉树的先序、中序、后序遍历(非递归实现)
二叉树的公共祖先(简单地说,剑指offer上的题大都是高频题)
1-n中有多少个1
字典树(前缀树)的理解以及在统计上的应用
并查集的实现(低频)
数组的全排列
void perm(int list[],int low,int high)
{
if(low==high)//当low==high时,此时list就是其中一个排列,输出list
{
for(inti=0;i<=low;i++)
cout<< list[i];
cout<<endl;
}
else
{
for(inti=low;i<=high;i++)//每个元素与第一个元素交换
{
swap(list[i],list[low]);
perm(list,low+1,high);//交换后,得到子序列,用函数perm得到子序列的全排列
swap(list[i],list[low]);//最后,将元素交换回来,复原,然后交换另一个元素
}
}
}
N个骰子出现和为m的概率
海量数据问题(可参考左神的书)
一致性哈希
线段树的实现(一般是区间求解问题,低频)
KMP,Manacher,Bfprt算法(进阶)