算法
1.反转字符串问题
如输入“iam a good man” ,返回“man good a am i”
2.蛇形矩阵问题
3.N皇后问题
4.topKW问题
5.快拍思想的topK问题
二分查找
字符串匹配问题
判断是否是回文
fibnacci问题
台阶问题有20阶台阶,一次跳1个或者跳2个有多少种方法
快排
整个快速排序的核心是分区(partition),分区的目的是传入一个数组和选定的一个元素,把所有小于那个元素的其他元素放在左边,大于的放在右边。
快排思路
选取基准点,从最右的指针向前遍历,找到第一个小于基准点的值,和基准点交换,
冒泡排序
归并排序
//归并排序(时间复杂度为N*logN,稳定;数据库,Java,Python的对象排序都用它)
//原因(优点):稳定,速度较快,空间复杂度为N;
//合并时看子数组规模,大时用归并,小时用插入,都稳定;
// 对应Java中的timiSort
//思想:将数组分为两个数组,将两个数组排序后合并;
//子数组的排序可以递归调用归并排序,规模较小时用插入排序
//涉及理论:插入排序,分治法,递归
插入排序
//插入排序(相对冒泡和选择较好,但时间复杂仍为n**2,空间为1,稳定)
//思想:同打牌,将新摸到的牌插入到已排好的牌面上
//操作:每次将后面的数插入到前面已排好的数组中
桶排序
堆排序