面试常见算法总结

这一篇博客主要是对面试过程中经常问到的一些算法题型做一个总结,后面会有几篇专门的文章对每一个类型的算法进行总结。

总结:

有几个题很相似,但是解决的方法不同:

1.topk问题,

例如:海量数据中找第k个大的数——类排序,外部排序
求数据流的中位数——类排序,最大堆最小堆

2.树的遍历,镜像,相同

树的层次遍历
树的镜像判断
树的相同判断

3.链表快慢指针的遍历

链表环的寻找
链表倒数k的节点的选择

4.字符串重复的问题

寻找非重复的字符——分治+异或
寻找第一个非重复的数组——队列+次数表
寻找第一个重复的字符——bitmap表
字符串的排序,去重——bitmap表

5.队列,栈的互相转换

两个队列转换成为一个栈
两个栈转换成一个队列
栈最小值操作

6.动态规划

最大子数组
斐波拉契
丑数
圆圈删除数字
n个鸡蛋从m层楼上扔下来,确定k次即可辨别零界点

http://blog.csdn.net/wolinxuebin/article/details/47057707

给50个硬币,面值可以不同,排成一排,两个人轮流取,只能从两端取,先取的人如何保证取到的币值大于等于另一个人。

f[i][j]=max(num[i] + sum[i+1][j] - f[i+1][j] , num[j] +  sum[i][j-1] - f[i][j-1])
f[i][j]表示从i到j取的最大和
sum[i][j]表示从i到j的和

7.全排列问题

8.回溯法

迷宫
数字寻找路线

9.搜索算法trie+topk问题


http://blog.csdn.net/stormbjm/article/details/12752317

10.倒排索引




https://www.cnblogs.com/zlslch/p/6440114.html

全排列问题

给出几个数,求这些数的全排列,首先从数学上我们可以分析,全排列就是An的可能性,那么如何做呢?

使用的思路就是交换,首先将第一个元素固定,然后去递归第二个元素之后的全排列
注意每次将第一个元素和后面一个元素固定,然后去递归,递归完成了之后将其交换回来,在进行其它的交换

相似的问题:
1,八皇后问题
2.矩阵面值相等的问题

小结:

这些问题都是首先求出所有的全排列,然后给出这些数字排列的约束条件,从约束条件中选出我们题目给定的要求。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值