- 判断
- 奇偶数
- 整数小数
- 数据类型
- 小数比较
比较大小小数 比较大小 为什么 不对
- 溢出
判断数值溢出
- http://c.biancheng.net/cpp/u/yuanma/
| 数学
- 随机数
- 绝对值
- 数的合并分解 求第几位
- 级数 阶乘
- 素数
- 回文数
- 水仙花数
- 奇数偶数
- 数制转化
- 最大公约数最小公倍数
- 质因数
- 求极值(最大值最小值)
- 鞍点
- 计算分段函数 解方程
- 斐波那契数列
- 百元百鸡
|
- 象棋棋盘
- ASCII
- 杨辉三角
- 九九乘法表
- 日历
- 日期时间
- 大小写变换
- 3的幂
- 质数
| 求文字或字母出现次数
倒序
人机猜数字 | | —- | —- | —- |
字符串
- 最长不重复子串 |
- atoi |
- 反转 |
---|---|---|
- 唯一字符 |
- 回文字符串 - 字符串相加 |
- 比较 |
kmp |
位运算
|
- 整形二进制颠倒
https://leetcode-cn.com/problems/reverse-bits/ |
- 汉明距离
|
- 汉明重量
|
| —- | —- | —- |
链表
- 链表反转 - 环形链表 - 链表中间节点 |
- 删除链表 |
- 有序链表合并 |
---|---|---|
- 去重 |
- 2020年4月12日 21点17分 - 链表的很多问题都是由双指针来解决的,比如 找到第几个节点 找到中间节点 |
数组
|
- 旋转
| 全排列
- 思想
参考
- https://leetcode-cn.com/problems/permutations/solution/hui-su-suan-fa-python-dai-ma-java-dai-ma-by-liweiw/
| 矩阵旋转90度
参考
https://blog.csdn.net/qq_26525215/article/details/52076488 |
| —- | —- | —- |
|
- 排序
|
- 数组交集
|
- 水最多的容器
|
|
- 右侧小于个数
|
- 移除元素
|
- 插入位置
- 二分
|
|
- 股票买卖时机
| | |
抽象数据类型
| 队列二叉树层级遍历
整体思路
- 使用队列
局部改进二叉树层级遍历锯齿
整体思路
- 双端队列
局部改进
| 栈
- 括号匹配
整体思路
- 计数器方法
- 栈
局部优化改进
- 开头判断奇数偶
- 栈长度和字符串长度 比较判断
- 使用ASII码 判断 匹配
https://leetcode-cn.com/problems/valid-parentheses/
- 栈实现队列
- 队列实现栈
| TOPKhttps://blog.csdn.net/qq_41880190/article/details/89404706
https://blog.csdn.net/iteapoy/article/details/79822343
https://www.sohu.com/a/255145095_178889 |
| —- | —- | —- |
哈希表
- 两数之和 |
||
---|---|---|
栈和队列
- 括号匹配 |
||
---|---|---|
树
- 二叉树遍历 |
- 比较相等 - 对称 - 最大最小深度 - https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/ |
- 路径和 |
---|---|---|
- 平衡二叉树 |
动态规划
- 子序列和数目 |
- 爬楼梯 |
- 最长有效括号 |
---|---|---|
真题
问题查找
顺序
插值查找
斐波那契查找树表查找分块查找哈希查找
二分
https://www.cnblogs.com/maybe2030/p/4715035.html
https://blog.csdn.net/weixin_39241397/article/details/79344179
排序
算法分类
- 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。
- 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。
算法分析
- 冒泡时间复杂度原因
https://blog.csdn.net/qq_41891257/article/details/85245127
- 相同稳定性
相邻的交换就是稳定的
比较-交换-冒泡Bubble
思想
在要排序的一组数中,对当前还无序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。
分析
比较-交换-快速Quick
思想
1.选择一个基准元素,通常选择第一个元素或者最后一个元素, 2.通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。 3.此时基准元素在其排好序后的正确位置 4.然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。
问题
如何分割:双指针方法,具体不止一种
https://blog.csdn.net/nrsc272420199/article/details/82587933
https://blog.csdn.net/shujuelin/article/details/82423852
public int getMid(int[] arrays,int low,int high) {
int base = arrays[low];//基准元素
while (low < high){
while (low < high && arrays[high] >= base){//尾部大于基准,往前挪动
high--;
}
arrays[low] = arrays[high];
while (low < high && arrays[low] <= base){//首部小于基准,往后挪动
low++;
}
arrays[high] = arrays[low];
}
arrays[low] = base;//中间赋值基准元素
return low;
}
public void quick(int[] arrays,int low,int high) {
if (low < high) {
int mid = getMid(arrays,low,high);
quick(arrays,low,mid -1);
quick(arrays,mid+1,high);
}
}
public int[] quick(int[] arrays) {
quick(arrays,0,arrays.length-1);
return arrays;
}
比较-选择-直接选择
思想
选择无序区间的最小值(或最大值)和无序区间的第一个交换
相同稳定性
具体问题具体分析
https://blog.csdn.net/houyanjun/article/details/2446074
比较-选择-堆
思想
根据数组无序区间创建堆,将最大项放到后面成为序区间,重复上述步骤
问题
如何创建堆:从第一个非叶子结点从下至上,从右至左调整结构
- 分析
时间复杂度稳定 而且快
空间复杂度 低
相同稳定性 不稳定
代码复杂度高
- 参考
https://blog.csdn.net/qq_36186690/article/details/82505569
比较-插入-直接插入
思想
当前元素插入到有序区间合适位置
分析
比较-插入-希尔
- 思想
第一个突破O(n)的排序算法,是简单插入排序的改进版 分组的直接插入
比较-归并-二路归并
思想
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
问题
合并: 创建新数组暂存,需要额外的空间,选择小的形成新的数组
- 参考
https://blog.csdn.net/hd12370/article/details/81036680
如何选择算法
根据具体数据特点来选择,算法不止有时间复杂度和空间复杂度
稳定性,交换次数 等等 特性 都要考虑进去
依然是建议大家不要对算法带有个人色彩,在面试回答问题的时候和看待一个人和事物的时候,可以参考的回答模式是「具体问题具体分析,在什么什么情况下,用什么什么算法」。
参考
题目
蓝桥杯选拔
- 顺时针排序 数数 相等拿走 求最大数字
- 已知两个包装数量 求最大不能组合的数字
- 13
- 1113
- 3113
- 132113
- 下一个字符串 是对上一个字符串的描述
- 已知一个字符串
- 求几次操作 相邻字母不相同
- 已知一排字母 和26字母新顺序
- 求字母按照新顺序排序结果
- 已知n人 k分以内才可以匹配对局
- 求可以组成几局
- 已知整数N
- 求别的进制
- 已知字符串
- 求操作几次 可以变成回文
参考
你看过/写过哪些有意思的代码?
百度校园招聘历年经典面试题汇总:Android岗.docx
2018名企校招笔试真题精选-产品&运营篇.pdf
2018名企校招笔试真题精选技术篇.pdfACM算法模板(吉林大学).pdfCCF真题及答案.pdf阿里巴巴2017秋招前端笔试题.pdf阿里巴巴校园招聘历年经典面试题汇总:算法工程师.docx阿里校园招聘历年经典面试题汇总:前端岗.docx百度校园招聘历年经典面试题汇总:Java开发.docx百度校园招聘历年经典面试题汇总:测试开发.docx杭州电子科技大学期末考试真题:操作系统.docx华为校园招聘历年经典面试题汇总:Java开发.docx计算机基础提高资料:数据库篇2.pdf今日头条2017前端工程师实习生笔试题.pdf今日头条校园招聘历年经典面试题汇总:C++研发.docx京东校园招聘历年经典面试题汇总:Java开发.docx美团校园招聘历年经典面试题汇总:Android岗.docx清华大学期末考试真题:C++篇.docx腾讯校园招聘历年经典面试题汇总:C++研发.docx腾讯校园招聘历年经典面试题汇总:前端岗.docx网易校园招聘历年经典面试题汇总:C++研发(1).docx网易校园招聘历年经典面试题汇总:C++研发.docx校园招聘历年经典面试题汇总:产品岗.docxIT互联网名企经典面试题汇总:算法 数据结构篇.docx百度校园招聘历年经典面试题汇总:Android岗.docx
博瑞思笔试题(已完成).docx博瑞思试卷1(已经格式化).docx笔试题目-国泰新点-开发(已经格式化).docx
国泰新点实施.docx国泰新人考试.docx
科蓝笔试题.docx中软笔试题.docx紫金融畅java笔试(试卷).docx
测试工程师试卷.docx测试工程师.zip
新大陆数据库工程师试卷.docx数据工程师.zip
新大陆技术支持笔试题(已经格式化).docx技术支持.zip
新大陆java开发(已经完成).docx新大陆java开发答案.docxjava开发.zip
苏福特笔试题.docx
剑指Offer 名企面试官精讲典型编程题(纪念版)-何海涛.pdf剑指OFFER 名企面试官精讲典型编程题 第2版.pdf