算法高频面试题

时间复杂度的计算方式(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<

}

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算法(进阶)

你可能感兴趣的:(算法高频面试题)